[英]Python prime number list wrong?
我尝试了几种不同的方法来获得10001素数。
def isPrime(value):
if ((2**value)-2)%value==0:
return True
def nthPrime(n):
count = 0
value = 1
while count < n:
value += 1
if isPrime(value):
count += 1
return value
当10001是参数时,它返回103903.当我期待104743时。
我试过了:
primes = []
for i in range(2,105000):
if ((2**i) - 2) % i == 0:
primes.append(i)
print primes[10001] ---> 103903
我相信你的主要筛选是错误的。 尝试使用isPrime函数,该函数将每个较小的素数转换为mod。 如果其中任何一个为0,那么该数字是复合的(不是素数)。 据我所知,没有单一的比较会告诉你一个数字是否为素数,正如你的isPrime函数所假设的那样。
这是项目欧拉? 这对我来说似乎很熟悉。
你的isPrime函数是错误的,就像TEOUltimus说的那样,没有一种方法可以判断一个数字是否为素数。
我想这几乎可以回答你的问题。
你可以创建一个函数来生成素数,这可能会很慢,但它会起作用。
这是我的功能:
def PrimesSieve(limit):
np=set()
p=[2]
for i in xrange(1,limit+1,2):
if i == 1: continue
if {i} & np: continue
beg=2 if i % 2 == 0 else 0
for j in xrange(beg,int(limit)+1,i):
np.add(j)
p.append(i)
return p
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.