[Back to MATH SWAG index] [Back to Main SWAG index] [Original]

    {
    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.

[Back to MATH SWAG index] [Back to Main SWAG index] [Original]