Я спрашиваю о проблеме Project Euler 27 (https://projecteuler.net/problem=27). Я написал фрагмент кода, который либо не работает, либо не работает достаточно быстро - я новичок в программировании и не совсем понимаю смысл ошибки, которую я получаю.Квадратичные числа
В любом случае, вопрос просит меня найти, какие целые числа $ a, b $ с $ | a |, | b | < 1000 $ приводит к $ n^2 + an + b $, производящему самую большую коллекцию последовательных простых чисел, начиная с $ n = 0 $. Прежде всего заметим, что $ b $ должен быть простым, чтобы член $ n = 0 $ был простым и начинал цепочку. Поэтому я написал фрагмент кода, который зацикливает b на все возможные простые значения, а затем проверяет каждое целое число $ -1000 < a < 1000 $ и измеряет длину цепочки последовательных простых чисел. Я включил его ниже:
n=int(input("Set a bound for range of a and b: "))
def is_prime(n):
if n==1:
return False
elif n==2 or n==3:
return True
elif (n % 2 == 0) or (n % 3 == 0):
return False
elif all(n % i != 0 for i in range(2, ceil(n**0.5+1))):
return True
else:
return False
def seive(n):
primes=[]
for i in range(n):
if is_prime(i)==True:
primes.append(i)
for j in primes: #j can't be allowed to be negative since when m=0 (the first term), we must have m**2+k*m+j prime. Therefore j must be chosen from primes
for k in range(-n,n,1):
chain=[]
for m in range(0,n):
while is_prime(m**2+k*m+j) == True and m**2+k*m+j>0:
chain.append(m**2 + k*m + j)
details = [j,k,len(chain)]
return details
print(seive(n))
Может кто-то пожалуйста, либо объяснить, что я сделал неправильно, и дать мне подсказку о том, как получить это работает? Благодаря!
На каком языке это написано? Какая ошибка вы получаете? –
Эйлер просит вас найти два коэффициента 'a' и' b'. вы бы хорошо использовали эти два имени переменных, чтобы помочь нам понять ваш код. Во-вторых, снова прочитайте вопрос и очень внимательно проверьте, что они на самом деле просят вас. – rossum