Little novice program written in Python

Rogério Brito rbrito at ime.usp.br
Thu Apr 24 20:31:15 EDT 2008


Hi, All.

I'm just getting my feet wet on Python and, just for starters, I'm coding some 
elementary number theory algorithms (yes, I know that most of them are already 
implemented as modules, but this is an exercise in learning the language idioms).

As you can see from the code below, my background is in C, without too much 
sophistication.

What I would like is to receive some criticism to my code to make it more 
Python'esque and, possibly, use the resources of the computer in a more 
efficient way (the algorithm implemented below is the Sieve of Eratosthenes):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#!/usr/bin/env python

n = int(raw_input())
a = [i for i in range(0,n+1)]
a[1] = 0  # not a prime
prime = 1 # last used prime
finished = False

while (not finished):
     prime = prime + 1
     # find new prime
     while prime*prime <= n and a[prime] == 0:
	prime += 1
     # cross the composite numbers
     if prime*prime <= n:
	j = 2*prime
	while j <= n:
	    a[j] = 0
	    j += prime
     else:
	finished = True

# print out the prime numbers
i = 2
while i <= n:
     if a[i] != 0:
	print a[i]
     i += 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Thank you for any help in improving this program,

-- 
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org



More information about the Python-list mailing list