单页网站系统淘宝标题优化工具推荐
题目描述
求 1,2,⋯,N 中素数的个数。
输入格式
一行一个整数 N。
输出格式
一行一个整数,表示素数的个数。
样例 #1
样例输入 #1
10
样例输出 #1
4
提示
对于 100% 的数据,1≤1081≤N≤108。
本题时间限制在2秒以内。
因为题目时间限制是2秒,所以可以用埃式筛法
埃式筛法
埃式筛法的原理很简单
如果 i 是质数,那么把所有的小于 n 的 i 的倍数(不包括 i )标记 vis[j]=1;
#include <bits/stdc++.h>
using namespace std;
bool vis[100000010]; //标记数组
int n,ans=0;
int main(){scanf("%d",&n);vis[0]=vis[1]=1;for(int i=2;i*i<=n;i++){ //优化1 if(vis[i]!=1){for(int j=i*i;j<=n;j+=i){ //优化2 vis[j]=1; //0是质数,1不是 }}}for(int i=2;i<=n;i++){if(vis[i]==0){ans++;}}printf("%d",ans);return 0;
}