eratos.py
#!/usr/bin/env python
#
# Sieve of Eratosthenes
# Author: Yotam Medini [email protected] -- Created: 2006/February/06
import sys
def usage_exit(a0, rc):
sys.stderr.write(
"""
Usage:
%s <bound>
"""[1:] % a0)
sys.exit(rc)
# Mark by False all multipliers of n in the sieve.
# Note that sieve is a list that is being _changed_ here for the caller.
def mark_mults(sieve, n):
mult = n*n
while mult < len(sieve):
sieve[mult] = False
mult += n
# Begin program
if len(sys.argv) != 2:
usage_exit(sys.argv[0], 1)
M = int(sys.argv[1])
sieve = (M + 1)*[True]
n_primes = 0
n = 2
while n <= M:
if sieve[n]:
n_primes += 1
sys.stdout.write("P[%3d] = %5d\n" % (n_primes, n))
mark_mults(sieve, n)
n += 1
sys.exit(0)
Generated by GNU enscript 1.6.4.