#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e6 + 10;
bool st[N];
int cnt,prime[N];
int n;
void div()
{
for(int i = 2; i <= n ; i ++ )//对于所有的数我么都要判断一下他是不是质数
{
if(!st[i])prime[cnt++] = i;
for(int j = 0; j <cnt && prime[j]<= n/i; j ++ )//我们只需要枚举一下他较小的质因子;
{
st[prime[j]*i] = true;
if(i%prime[j] == 0)break;
}
}
}
int main(void)
{
cin>>n;
div();
cout<<cnt<<endl;
return 0;
}
线性素数筛法
最新推荐文章于 2024-07-14 23:26:21 发布