描述
求 1,2,⋯,N 中素数的个数。
输入描述
一行一个整数 N。
输出描述
一行一个整数,表示素数的个数。
样例输入 1
10
样例输出 1
4
提示
数据范围与提示
对于 40% 的数据,1≤N≤106。
对于 80% 的数据,1≤N≤107。
对于 100% 的数据,1≤N≤108。
#include<bits/stdc++.h>
using namespace std;
int prime[10000000],cnt=0; //质数数组
bool isPrime[100000010];
int main(){
int n;
cin>>n;
isPrime[1]=true;
for(int i=2;i<=n;i++){
//如果i是质数,存储到质数表中
if(isPrime[i]==false){
prime[++cnt]=i;
}
//用质数表去筛除非质数
for(int j=1;j<=cnt&&prime[j]*i<=n;j++){
isPrime[prime[j]*i]=true;
if(i%prime[j]==0){
break;
}
}
}
cout<<cnt;
return 0;
}