\$////////////////////////////////////////////////////////// \$// Name: Peter M. Maurer \$// Program: Sieve of Eratosthenes \$// Due: Never \$// Language: SETL \$////////////////////////////////////////////////////////// program SieveE; \$ define the sieve data structure candidates := [1,1]; i := 3; loop while i<1000 do \$ everything is potentially prime until proven otherwise Candidates(i) := 1; i := i + 1; end loop; \$ Neither 1 nor 0 is prime, so flag them off Candidates(1) := 0; \$ start the sieve with the integer 1 i := 1; loop while i<1000 do \$ advance to the next un-crossed out number. \$ this number must be a prime loop while i<1000 and Candidates(i) = 0 do i := i + 1; end loop; \$ insure against running off the end of the data structure if i<1000 then \$ cross out all multiples of the prime, starting with 2*p. j := 2; loop while j*i < 1000 do Candidates(j*i) := 0; j := j + 1; end loop; \$ advance to the next candidate i := i + 1; end if; end loop; \$ all uncrossed-out numbers are prime (and only those numbers) \$ print all primes i := 1; loop while i<1000 do if Candidates(i) /= 0 then print(i,' is prime'); end if; i := i + 1; end loop; end program;