Simple prime number generator in Python

前端 未结 26 2250
感情败类
感情败类 2020-11-22 07:16

Could someone please tell me what I\'m doing wrong with this code? It is just printing \'count\' anyway. I just want a very simple prime generator (nothing fancy).

26条回答
  •  我寻月下人不归
    2020-11-22 08:12

    Here's a simple (Python 2.6.2) solution... which is in-line with the OP's original request (now six-months old); and should be a perfectly acceptable solution in any "programming 101" course... Hence this post.

    import math
    
    def isPrime(n):
        for i in range(2, int(math.sqrt(n)+1)):
            if n % i == 0: 
                return False;
        return n>1;
    
    print 2
    for n in range(3, 50):
        if isPrime(n):
            print n
    

    This simple "brute force" method is "fast enough" for numbers upto about about 16,000 on modern PC's (took about 8 seconds on my 2GHz box).

    Obviously, this could be done much more efficiently, by not recalculating the primeness of every even number, or every multiple of 3, 5, 7, etc for every single number... See the Sieve of Eratosthenes (see eliben's implementation above), or even the Sieve of Atkin if you're feeling particularly brave and/or crazy.

    Caveat Emptor: I'm a python noob. Please don't take anything I say as gospel.

提交回复
热议问题