判断素数系列

来源:互联网 发布:淘宝达人直播怎么开通 编辑:程序博客网 时间:2024/06/07 03:26
判断素数:检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,N则为素数
def isprime(n):    for i in range(2,(int(n**0.5))+1):        if n % i == 0:            return False    return True

高效率办法:

减少 除数n 的选取个数就行了。
比如 n = 4,既然4 能被 2 整除,也就是说 一个连2都无法整除的数,也无法被4整除,该直接使用5(素数,作为素数无法被整除,且所有的 合数都能被 素数表示)。因此我们使用 素数作为除数可以极大提高效率。另外选择的素数也不能大于被除数,因为无法 大数整除小数。
因此采用 素数数组作为除数是一种高效的选择。

无限制判断素数程序:

#python 3.4.1import mathdef oddgen(n):    while True:        yield n        n += 2def isprime(n):    for i in range(2,int(n**0.5)+1):        if n % i == 0:            return False    return Truedef genpir():    yield 2    for n in oddgen(3):        if isprime(n):            yield nmygen = genpir()

可以用下面代码去打印,或者直接在shell里面输入mygen.__next__()
print([mygen.__next__() for i in range (50)])
上面的程序用了生成器


一种高效的打印素数的方法(来自网络):

import mathdef prime(n):    primes = [2]    primet = [2]    for x in range(3,n+1,2):        if primet[-1] ** 2 < x:            primet.append(primes[len(primet)])        for i in primet:            if x % i == 0:                break        else:            primes.append(x)    return primes




0 0