56 lines
1.1 KiB
Plaintext
56 lines
1.1 KiB
Plaintext
|
|
var notPrime[500]
|
|
|
|
func main(max) {
|
|
println("Now printing every prime between 2 and ", max, ":")
|
|
if (max > 499) {
|
|
println("Sorry, this program can only print primes up to 499")
|
|
return 0
|
|
}
|
|
|
|
// Special cases for 0 and 1
|
|
notPrime[0] = 1
|
|
notPrime[1] = 1
|
|
|
|
var i = 2
|
|
while (i < max/2+1) {
|
|
// Only do sieve if i is a prime
|
|
if (!notPrime[i])
|
|
doSieve(i, max)
|
|
i = i + 1
|
|
}
|
|
|
|
printPrimes(max)
|
|
}
|
|
|
|
// Marks every multiple of factor, from 2*factor and above, as not being prime
|
|
func doSieve(factor, max) {
|
|
var counter = factor*2
|
|
while (counter < max + 1) {
|
|
notPrime[counter] = 1
|
|
counter = counter + factor
|
|
}
|
|
}
|
|
|
|
func printPrimes(max) {
|
|
var i = 0
|
|
while (1) {
|
|
if (!notPrime[i])
|
|
print(" ", i)
|
|
|
|
if (i == max)
|
|
break
|
|
else
|
|
i = i + 1
|
|
}
|
|
println("")
|
|
}
|
|
|
|
//TESTCASE: 600
|
|
//Now printing every prime between 2 and 600:
|
|
//Sorry, this program can only print primes up to 499
|
|
|
|
//TESTCASE: 100
|
|
//Now printing every prime between 2 and 100:
|
|
// 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
|