START ''////////////////////////////////////////////////////////// '' ''// Name: Peter M. Maurer '' ''// Program: Sieve of Eratosthenes '' ''// Due: Never '' ''// Language: Jovial '' ''////////////////////////////////////////////////////////// '' FILE MYOUTPUT ... \$ ''Insufficient information to complete this declaration'' PROC SIEVEE \$ '' define the sieve data structure '' ARRAY CANDIDATES 1000 B \$ FOR I =0,1,999 \$ BEGIN '' everything is potentially prime until proven otherwise '' CANDIDATES(\$I\$) = 1\$ END '' Neither 1 nor 0 is prime, so flag them off '' CANDIDATES(\$0\$) = 0\$ CANDIDATES(\$1\$) = 0\$ '' start the sieve with the integer 0 '' FOR I = 0\$ BEGIN IF I GE 1000\$ GOTO DONE\$ '' advance to the next un-crossed out number. '' '' this number must be a prime '' NEXTI. IF I LS 1000 AND Candidates(\$i\$) EQ 0 \$ BEGIN I = I + 1 \$ GOTO NEXTI \$ END '' insure against running off the end of the data structure '' IF I LT 1000 \$ BEGIN '' cross out all multiples of the prime, starting with 2*p. '' FOR J=2 \$ FOR K=0 \$ BEGIN K = J * I \$ IF K GT 999 \$ GOTO ADV \$ CANDIDATES(\$K\$) = 0 \$ J = J + 1 \$ END '' advance to the next candidate ADV. I = I + 1 \$ END END '' all uncrossed-out numbers are prime (and only those numbers) '' '' print all primes OPEN OUTPUT MYOUTPUT \$ '' DONE. FOR I=0,1,999\$ END IF CANDIDATES(\$I\$) NQ 0\$ BEGIN OUTPUT MYOUTPUT I \$ '' probably not correct '' END END TERM\$