#include <stdio.h>
using namespace std;
#define maxN 50010
#define F(i,j,n) for (int i=j; i<=n; i++)
int n;
int check[maxN],p[maxN];
int tot;
void prime(int n)
{
tot=0;
F(i,2,n)
{
if (!check[i]) p[++tot]=i;
F(j,1,tot)
{
if (i*p[j]>=maxN) break;
check[i*p[j]]=1;
if (i%p[j]==0) break;
}
}
}
int main()
{
freopen("线性筛素数.in","r",stdin);
freopen("线性筛素数.out","w",stdout);
scanf("%d",&n);
prime(n);
printf("%d\n",tot);
F(i,1,tot) printf("%d ",p[i]);
return 0;
}
线性筛素数
最新推荐文章于 2021-04-16 10:17:42 发布