2017-11-28 15 views
0

그래서 10,001 소수를 찾으려고합니다. 예, 오일러 # 7 문제입니다. 내가 쓴 코드는 3에서 10,001까지의 소수를 모두 주지만 내 대답은 여전히 ​​정확하지 않습니다. 이 질문에 대한 답변이 있었지만 다른 사람의 코드를 훔쳐도 도움이되지 않는다는 것을 알고 있습니다. 그래서 나는이 문제에 대한 잘못된 통찰력을 찾고 있습니다. 먼저 모든 홀수를 분리하여 목록에 추가했습니다. 목록에 소수 중 일부의 제곱이 있다는 것을 알아 차 렸습니다. 따라서 목록을 2에서 10,0001까지의 모든 숫자의 제곱에 대해 확인합니다. 그게 저에게 소수 만 남겨 놓았어야 했는데도 여전히 잘못된 대답을 얻고 있습니다. 어떤 아이디어라도 위대 할 것입니다.1과 10001 사이의 가장 큰 소수는 무엇입니까

prime = [i for i in range(2, 10002) if i % 2 != 0] 

for i in range(2, 10002): 
    if i * i in prime: 
     prime.remove(i * i) 

print(prime[-1]) 
+4

15는 제곱수가 아닙니다. –

+1

10001 번째 소수 또는 10001보다 작은 가장 큰 소수를 찾으려고합니까? 그들은 서로 다른 문제입니다. –

+0

메신저는 10001 번째 소수를 채색하려고합니다. – fallenangel226

답변

2

7 * 11 = 77의 경우를 시도해 보셨습니까? 당신은 모든 알려진 소수의 배수를 찾을 때 완벽한 사각형을보고 있습니다. Project Euler의 주제를 유지하면서 나는 대답을주지 않을 것이지만 나는 Sieve of Eratosthenes을 가리킬 수 있습니다.

실제로는 ... 초기 문제이기 때문에, 나는 스포일러를 매달겠습니다.

소수의리스트를 만들고 [2,3,5]으로 초기화하십시오. n = 8에서 시작하여 매회 6 씩 증가하면서, 2에서부터 숫자의 제곱근까지 알려진 소수 각각에 대한 모듈러스를 테스트하여 소수성에 대해 n-1과 n + 1을 확인하십시오.

+0

그 같은 숫자는 결코 내 마음을 넘어서지 못했습니다. 팁과 링크도 가져 주셔서 감사합니다. – fallenangel226