問題 : 素数 | Aizu Online Judge
#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 Solve(int n) {
int answer=0;
for (int i=2; i<=n; ++i)
if (is_prime[i]) ++answer;
cout << answer << endl;
}
int main(void) {
int n;
Sieve();
while (cin >> n)
Solve(n);
return 0;
}
蟻本に掲載されているエラトステネスの篩を用いて素数を列挙。
入力した数値以下の素数の数を出力。
~了~