[英]Prime number algorithm stops working after certain point
这是我的质数发现算法-它可以很好地工作(并且非常快),直到将上限设置为173以上,然后开始抛出
ValueError: list.remove(x): x not in list
我不明白为什么会这样,直到达到174或更高的限制,它才能正常工作-这是我的代码。
def primefinder(limit):
primes = [2, 3]
for i in range(1, (limit / 6 + 1)):
primes.append(6 * i - 1)
primes.append(6 * i + 1)
for i in primes[:]:
if i > 24:
for x in primes:
if x <= i ** 0.5:
if i % x == 0:
primes.remove(i)
continue
else:
break
if limit % 6 == 0:
primes.remove(primes[-1])
return primes
在这里-您不想在那儿打印照片,那只是为了显示正在发生的事情。
def primefinder(limit):
primes = [2, 3]
for i in range(4, limit):
if (prime(i)):
primes.append(i)
print (i)
return primes
def prime(number):
oldnum = number
factor = 1
while number > 1:
factor += 1
if number % factor == 0:
if 1 < factor < oldnum:
return False
number //= factor
return True
primefinder(200000)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.