반응형
사실 이번 문제는 에라스토테네스의 체를 이용하는 것 이외에는 별다른 좋은 방법은 없어보입니다.
큰 수에 대해서는 효율적인 알고리즘을 개발할 수 있지만, 2백만이라는 비교적 작은 수에 대한 것이라서 간단하게 짜보았습니다.
#define LIMIT 2000000 void solve1() { int primes[200000]; int count = 0; int64_t sum = 0; primes[count++] = 2; sum += 2; primes[count++] = 3; sum += 3; for( int p = 5 ; p < LIMIT ; p+=2 ) { bool isPrime = true; for( int i = 1; primes[i]*primes[i] <= p ; i++ ) { if( p%primes[i] == 0 ) { isPrime = false; break; } } if( isPrime ) { primes[count++] = p; sum += p; } } printf("Ans = %jd\n", sum); }
728x90
'Programming > Project Euler' 카테고리의 다른 글
12. 프로젝트 오일러 #12 : 500개 초과 삼각수 구하기 (0) | 2014.12.29 |
---|---|
#11 : 그리드에서 가장 큰 곱수 구하기(Brute Force) (0) | 2014.12.28 |
9. 프로젝트 오일러 #9 : 합이 1,000인 피타고라스 수 구하기 (0) | 2014.12.23 |
8. 프로젝트 오일러 #8 : 가장 큰 곱하기 수 구하기. (0) | 2014.12.23 |
7. 프로젝트 오일러 #7 : 10,001번째 소수 찾기 (0) | 2014.12.23 |
댓글