프로젝트 오일러 문제 27 (https://projecteuler.net/problem=27)에 대해 묻습니다. 나는 작동하지 않거나 충분히 빠르게 작동하지 않는 코드를 작성했습니다. 프로그래밍에 익숙하지 않고받은 오류의 의미를 완전히 이해하지 못합니다.정사각형
어쨌든, 질문에 정수 $ a, b $와 $ | a |, | b | < 1000 $ $ n^2 + an + b $ $ n = 0 $로 시작하는 연속 소수의 가장 큰 모음을 만듭니다. 우선, 우리는 $ b $가 프라임 (prime)이어야하고 $ n = 0 $ 항이 프라임 (prime)이고 체인을 시작해야한다는 것을 알게됩니다. 그러므로 가능한 모든 소수 값에 대해 b를 반복 한 코드를 작성한 다음 각각의 정수 $ -1000 < < 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