2013-12-14 2 views
1

프로젝트 오일러 상태의 문제 10에있는 질문에서 2000000 미만의 모든 소수를 추가하십시오. 나는 다른 번호를 시도하고 괜찮 았지만 2000000 시도했을 때 대답이 잘못되었습니다. 왜 그런가요? 여기 내 코드가있다.프로젝트 오일러 # 10 오답 받기

Long number = scanner.nextLong(); 
Long sum = 17L; 
for (Long i = 11L; i <= number; i ++) { 
if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0 || i % 7 == 0) { 
} else { 
sum += i; 
} 
} 
System.out.println(sum); 
+0

코드는 처음 4 개의 소수 만 인식합니다. 구조를 변경해야합니다. 소수에'List'를 사용할 수 있습니다. 숫자가 소수임을 알 때 목록에 추가하고 숫자가 소수인지 확인하려면 목록을 확인하십시오. – kero

답변

0

프라임 탐지 알고리즘이 완전히 잘못되었으므로 (매우 작은) 소수는 사용할 수 있지만 그 후에는 매우 빨리 넘어갑니다.

http://en.wikipedia.org/wiki/Primality_test

+0

큰 숫자에서 작동하지 않는 이유는 무엇입니까? – wormwood

+0

완전히 잘못 되었기 때문에! 링크를 읽으십시오. –

+0

네. XD 덕택입니다. – wormwood