$ include "seed7_05.s7i"; const func boolean: isPrime (in integer: number) is func result var boolean: prime is FALSE; local var integer: count is 2; begin if number = 2 then prime := TRUE; elsif number > 2 then while number rem count <> 0 and count * count <= number do incr(count); end while; prime := number rem count <> 0; end if; end func; var integer: currentPrime is 1; var integer: primeNum is 0; const func integer: getPrime is func result var integer: nextPrime is 0; begin repeat incr(currentPrime); until isPrime(currentPrime); nextPrime := currentPrime; incr(primeNum); end func; const proc: main is func local var integer: aPrime is 0; var integer: count is 0; begin write("First twenty primes:"); while primeNum < 20 do write(" " <& getPrime); end while; writeln; repeat aPrime := getPrime; until aPrime >= 100; write("Primes between 100 and 150:"); while aPrime <= 150 do write(" " <& aPrime); aPrime := getPrime; end while; writeln; repeat aPrime := getPrime; until aPrime >= 7700; while aPrime <= 8000 do incr(count); aPrime := getPrime; end while; writeln("Number of primes between 7,700 and 8,000: " <& count); repeat aPrime := getPrime; until primeNum = 9999; # discard up to and including the 9,999 prime! writeln("The 10,000th prime: " <& getPrime); end func;