繁体   English   中英

Python素数列表错了吗?

[英]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说的那样,没有一种方法可以判断一个数字是否为素数。

Python中的简单Prime生成器

我想这几乎可以回答你的问题。

你可以创建一个函数来生成素数,这可能会很慢,但它会起作用。

这是我的功能:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM