function
/--> bool[] primeSieve(int max)
| bool[] primes[max]
| primes[0] = false
| primes[1] = false
| 
| int i
| i = 2
| /-->
| | primes[i] = true
| | i = i + 1
| \--< i < max
|
| int firstPrime
| firstPrime = 1
| /-->
| | bool firstIsComposite
| | /-->
| | | firstPrime = firstPrime + 1
| | | firstIsComposite = false
| | | /--< firstPrime > max or firstPrime == max
| | | | firstIsComposite = not primes[firstPrime]
| | | \-->
| | \--< firstIsComposite
| | /--< firstPrime > max or firstPrime == max
| | | primes[firstPrime] = true
| | | int composite
| | | composite = firstPrime * 2
| | | /--< composite > max
| | | | /-->
| | | | | primes[composite] = false
| | | | | composite = composite + firstPrime
| | | | \--< composite < max
| | | \-->
| | \-->
| \--< firstPrime < max - 1
^ primes

main
int max
max = 1000
bool[] primes
primes = primeSieve(max)

print "Enter a number and I'll tell you whether or not it's prime!"
int testNum
testNum = input int

/--< testNum < 0 or testNum > max - 1
| /--< not primes[testNum]
| | print "Prime"
| \-->
| /--< primes[testNum]
| | print "Not prime"
| \-->
\-->

/--< not (testNum < 0 or testNum > max - 1)
| print "Out of bounds"
\-->
