[Pascal] Badanie liczb pierwszych

Witam

Napisałem program który bada czy podana liczba jest liczbą pierwszą

program badanie_czy_liczba_jest_liczba_pierwsza;

uses Crt;

var

liczba,i:longint;

czyPierwsza:boolean;

begin

czyPierwsza:=true;

writeln('Podaj liczbe: ');

readln(liczba);

clrscr;

for i:=2 to liczba-1 do

if (liczba mod i)=0 then

   begin

   czyPierwsza := false;

   break;

   end;


if (czyPierwsza=true) then

   begin

   writeln(liczba, ' JEST liczba pierwsza!');

   end

else

   begin

   writeln(liczba,' NIE JEST liczba pierwsza');

   end;

readln;

end.

I jak teraz przerobić żeby plik czytał liczby z pliku dane.txt gdzie są zapisane w kolumnie, i przepisywał TYLKO liczby pierwsze do pliku wynik.txt. Chodzi mi żeby była użyta pętla while, bo pętla ma działać dla nieokreślonej z góry liczby danych.

Praca z plikami

Przy sprawdzeniu czy liczba jest liczbą pierwszą wystarczy sprawdzić zakres od 2 do floor(sqrt(liczba))

Okej, już sobie poradziłem

program badanie_czy_liczba_jest_liczba_pierwsza;

uses Crt,math;

var

liczba,i:longint;

czyPierwsza:boolean;

wynik, dane:text;

begin

assign(dane, 'd:\dane.txt');

assign(wynik, 'd:\wynik.txt');

reset(dane);

rewrite(wynik);


while not eof(dane) do begin

czyPierwsza:=true;

writeln('Podaj liczbe: ');

readln(dane, liczba);

clrscr;

for i:=2 to floor(sqrt(liczba)) do

if (liczba mod i)=0 then

   begin

   czyPierwsza := false;


   end;


if (czyPierwsza=true) then

   begin

   writeln(wynik,liczba);

   end;


   end;

        close(wynik);

        close(dane);

readln;

end.

ten wiersz:

writeln('Podaj liczbe: ');

jest niepotrzebny, mo i przydał by się break; po:

czyPierwsza := false;

a czy

break; nie przerwie mi całego programu ?

break; przerywa tylko jedną pętle.

Zastanów się czy nie szybciej było by sprawdzić w praktyce niż pytać na forum i czekać na odpowiedź.