On 17 mar, 21:03, Benjamin Serrato <[EMAIL PROTECTED]> wrote: > I Found It!! The following was a post asking for help finding a bug. I > thought I needed help with my syntax, but just before sending I found > the bug on line 13. Line 13 should read: "base = 2". I would still > appreciate any comments on my program. Maybe there is a better way to do > it that I didn't think about. I know it's not that interesting but it's > my first one.
You may look at the fact.py demo script (somewhere in your python installation) > I'm almost halfway through an online tutorial I found on the python.org > site and decided to stop and write a program for myself. I got it in my > head to write a program to print all the primes; the idea came from > another tutorial. The program prints some non-prime numbers. In a > comparison to lists of primes the program prints eight non-primes for > numbers less than 150. Those numbers are [27,35,87,95,119,123,143,147]. > Here is the program. > > base = 2 > candidate = 3 > > while True: > while candidate % base != 0: > base = base + 1 > if base > (candidate / 2): > print candidate > candidate = candidate + 1 > base = 2 > else: > candidate = candidate + 1 > base = 2 # added Note that you can increment candidate by 2 (starting at 3, all primes are odd numbers). And after testing 2, you can increment base by 2 also. And you can exit somewhat earlier: if base*base>candidate there is no point in keep trying (now you`re exiting when base*2>candidate) > At first I tried to use 'return' on the 'else' block to cause the > program to loop, but I don't understand 'return' yet and that didn't > work. So, I put the rest into another while loop and was really happy to > find it worked but the program prints some non-prime numbers. return only makes sense inside a function. Wait until the next lesson... -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list