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 : [EMAIL PROTECTED],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
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to