这个 Project Euler 问题让我有点困惑。
这是我认为正确的解决方案:
import math
start = time.time()
def check_prime(a, b, n):
num = n**2 + a * n + b
mod = 3
if num >= 0:
check = int(math.sqrt(num))
else:
return False
while mod <= check:
if num % mod == 0:
return False
mod += 2
return True
def main():
n = 0
max_n = 0
for a in xrange(-1000, 1000):
for b in xrange(-1000, 1000):
while check_prime(a, b, n):
n += 1
if n > max_n:
max_n = n
product = a * b
n = 0
print max_n, product
print time.time() - start
if __name__ == '__main__':
main()
这给了我一个连续的 376 个主要列表,而实际列表只有 71 个。我想我只是很难理解这个问题。最长的素数列表是否必须至少为 80,因为这是作为示例给出的?我的程序计算了 71 列表的两项的乘积,但随后它一直上升到 376。
我忽略的问题中有什么吗?