下面展示一些 内联代码片
。
#include<iostream>
#include<cstring>
using namespace std;
const int Maxn=1e8+1;
const int inf=1e6;
int prime[100000];//存素数
bool vis[100000001];//0代表没有访问过,1访问过
int main()
{
int n;
memset(prime,0,sizeof(prime));
memset(vis,false,sizeof(vis));
scanf("%d",&n);
vis[1]=true;
for(int i=2;i<=n;i++)
{
if(!vis[i])//是素数,没被访问的都是,说明没有被标记为合数
{
vis[i]=true;
prime[++prime[0]]=i;
}
for(int j=1;j<=prime[0]&&i*prime[j]<=n;j++)//以i为倍数进行筛除,对所有已知素数的倍数(也就是合数)
{
vis[prime[j]*i]=true;//筛除
if(i%prime[j]==0) break;
}
}
printf("%d",prime[0]);
return 0;
}