{ JANOS SZAMOSFALVI the following routine uses a brute force approach with some optimization; it took less than 3 minutes with a 286/12 to find and print all primes up to 32768, about 50 seconds w/o printing them; it becomes a bit slow when you get into a 6 digit range } PROGRAM Primes; VAR number, max_div, divisor : INTEGER; prime : BOOLEAN; BEGIN writeln('Primes:'); writeln('2'); FOR number := 2 TO MAXINT DO BEGIN max_div := Round(sqrt(number) + 0.5); prime := number MOD 2 <> 0; divisor := 3; WHILE prime AND (divisor < max_div) DO BEGIN prime := number MOD divisor <> 0; divisor := divisor + 2; END; IF prime THEN writeln(number); END; END.