题目描述:
求 1∼n 之间素数个数。
输入格式:
一行一个数 n 。
输出格式:
一行一个数,表示答案。
样例输入:
10
样例输出:
4
提示:
样例解释 1
2,3,5,7
对于 100% 的数据,2≤n≤1011。
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<stdio.h>
const int N=1e8;
bool a[N]={};
int main(){
long long n;
scanf("%d",&n);
long long s=n-1;
for(int i=2;i*i<=n;i++){
if(a[i]==0){
for(int j=i*2;j<=n;j+=i){
if(a[j]==0){
a[j]=1;
s--;
}
}
}
}
printf("%d",s);
}