题目描述
求1~n中素数个数(n<=10^8)
输入格式
1 个整数N
输出格式
1 个整数,表示素数的个数。
输入输出样例
输入 #1
10
输出 #1
4
【解题思路】
一道线性筛素数的模板
不过多赘述,需要多多记忆
【code】
1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 using namespace std;
5 int n,ans;
6 int p[100000005],m;
7 bool vis[100000005];
8 int main(){
9 scanf("%d",&n);
10 memset(vis,1,sizeof(vis));
11 for(register int i=2;i<=n;i++){
12 if(vis[i]){
13 p[++m]=i;
14 }
15 for(register int j=1;j<=m;j++){
16 if(i*p[j]>n)break;
17 vis[i*p[j]]=0;
18 if(i%p[j]==0)break;
19 }
20 }
21 printf("%d\n",m);
22 return 0;
23 }