この 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()
これにより、実際のリストが 71 しかない 376 の連続したプライム リストが得られます。質問を理解するのが難しいと思います。それが例として与えられたものであるため、最長のプライムリストは少なくとも80である必要はありませんか? 私のプログラムは 71 のリストの 2 つの項の積を計算しますが、376 まで上がり続けます。
私が見落としている質問に何かありますか?