我目前正在尝试找到另一个大数中包含的最大素数。
maxlen = 1024
for i in range(1023, -1, -1):
maxlen -= 1
number = ""
for k in range(maxlen, -1, -1):
number = pi[k] + number
if isprime(number) == True:
print number
isprime() 是一个检查数字是否为素数的函数(非常标准)。这工作得很好,直到我得到一个 MemoryError 的某个点。
这不是因为函数检查的数字太大,因为它发生在第一个 for 循环的第 6 次运行左右。
我已经尝试过 gc.enable() 和 gc.collect() 没有任何积极的结果。
有谁知道如何解决这个问题?
编辑:根据请求定义 pi 和 isprime() :
f = open("/root/number", "r")
pi = f.read()
f.close()
其中文件“数字”包含我想在其中找到素数的原始数字。
def isprime(n):
n = abs(int(n))
if n < 2:
return False
if n == 2:
return True
if not n & 1:
return False
for x in range(3, int(n**0.5)+1, 2):
if n % x == 0:
return False
return True
追溯:
Traceback (most recent call last):
File "./primal.py", line 36, in <module>
if isprime(number) == True:
File "./primal.py", line 24, in isprime
for x in range(3, int(n**0.5)+1, 2):
MemoryError