0053 - Sum of Prime Numbers
#include <iostream> using namespace std; #define MAX 1000000 bool is_prime[MAX+1]; void Sieve(void) { for (int i=0; i<=MAX; ++i) is_prime[i]=true; is_prime[0]=is_prime[1]=false; for (int i=2; i<=MAX; ++i) if ( is_prime[i] ) for (int j=i*2; j<=MAX; j+=i) is_prime[j]=false; } void Slove(int n) { int s=0, number=1; while (n) if ( is_prime[++number] ) { --n; s+=number; } cout << s << endl; } int main(void) { int n; Sieve(); while (cin >> n && n) Slove(n); return 0; }
エラトステネスの篩使っただけ。。