Prime Number Aizu - 0009(素数筛)

    科技2023-09-18  77

    题意:

    给一个数n,问1~n内有多少个素数

    题目:

    Write a program which reads an integer n and prints the number of prime numbers which are less than or equal to n. A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. For example, the first four prime numbers are: 2, 3, 5 and 7.

    Input

    Input consists of several datasets. Each dataset has an integer n (1 ≤ n ≤ 999,999) in a line.

    The number of datasets is less than or equal to 30.

    Output

    For each dataset, prints the number of prime numbers.

    Sample Input

    10 3 11

    Output for the Sample Input

    4 2 5

    分析:

    打个素数筛就行

    AC模板:

    #include<stdio.h> #include<string.h> #include<map> #include<algorithm> using namespace std; const int M=1e6+10; int n; int dp[M],book[M]; map<int,int>mp; void init() { for(int i=2; i<M; i++) { if(!book[i]) { mp[i]=1; for(int j=i; j<M; j+=i) book[j]=1; } } for(int i=1; i<M; i++) { dp[i]=dp[i-1]; if(mp[i]) dp[i]++; } } int main() { init(); while(~scanf("%d",&n)) { printf("%d\n",dp[n]); } return 0; }

    备战ccpc分站赛ing ,题目分析简略,见谅,转载请注明出处。。。。。

    Processed: 0.040, SQL: 8