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