On Fri, 5 Sep 2014 15:14:41 -0700, Chris Kaynor <ckay...@zindagigames.com> wrote:
>On Fri, Sep 5, 2014 at 2:49 PM, Seymore4Head <Seymore4Head@hotmail.invalid> >wrote: > >> On Fri, 05 Sep 2014 12:48:56 -0400, Seymore4Head >> <Seymore4Head@Hotmail.invalid> wrote: >> >> >I'm still doing practice problems. I haven't heard from the library >> >on any of the books I have requested. >> > >> > >> http://www.practicepython.org/exercise/2014/04/16/11-check-primality-functions.html >> > >> >This is not a hard problem, but it got me to thinking a little. A >> >prime number will divide by one and itself. When setting up this >> >loop, if I start at 2 instead of 1, that automatically excludes one of >> >the factors. Then, by default, Python goes "to" the chosen count and >> >not "through" the count, so just the syntax causes Python to rule out >> >the other factor (the number itself). >> > >> >So this works: >> >while True: >> > a=random.randrange(1,8) >> > print (a) >> > for x in range(2,a): >> > if a%x==0: >> > print ("Number is not prime") >> > break >> > wait = input (" "*40 + "Wait") >> > >> >But, what this instructions want printed is "This is a prime number" >> >So how to I use this code logic NOT print (not prime) and have the >> >logic print "This number is prime" >> >> I am sure this has already been done, but after it was pointed out >> that you don't need to test for any number that multiplies by 2 it >> made me think again. >> >> If you start with the list [3,5,7] and step through the list of all >> remaining odd numbers (step 2), and start appending numbers that won't >> divide by numbers already appended in the list, that would seem like a >> pretty efficient way to find all prime numbers. >> > >To be correct, you only need to check for n being divisible by primes less >than sqrt(n). For example, the following code will produce a list of primes >from 2 to 1000 (the result will be in the "primes" list): > >import math >primes = [2] >for i in range(3, 1000): > end = math.sqrt(i) > for x in primes: > if x > end: # Once x is larger than the sqrt(i), we know it must be >prime, so we can early exit. > #print(i, "is a prime number") > primes.append(i) > break > if (i % x) == 0: > #print(i, "is a composite number") > break Thanks -- https://mail.python.org/mailman/listinfo/python-list