例:素数的个数
题意:给定整数n,请问n以内有多少个素数 (n <= 10的6次幂)
输入:
11
1000000
输出:
5
78498
#include <cstdio>
using namespace std;
const int maxn = 1000000 + 10;
int prime[maxn]; //第i个素数
bool is_prime[maxn]; //is_prime[i]为true表示i是素数
//返回n以内的素数的个数
int sieve(int n)
{
int p = 0;
for (int i = 0; i <= n; i++)
is_prime[i] = true;
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= n; i++){
if (is_prime[i]){
prime[p++] = i;
for (int j = 2 * i; j <= n; j += i)
is_prime[j] = false;
}
}
return p;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF){
printf("%d\n", sieve(n));
}
return 0;
}