线性筛 欧拉筛
#include <bits/stdc++.h>
using namespace std;
int f[1010];
int su[800];//素数表
int main()
{
int n = 1000;
int tot = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
if (!f[i])
{
//到了还没被标记就是素数
su[tot++] = i;
}
for (int j = 0; j < tot; j++)
{
if (i * su[j] > 1000)
{
break;
}
f[i * su[j]] = 1;
if (i % su[j] == 0)
break;
//su[j]*p p是su[j]倍数 su[j+1]*p 的最小素因子应该是su[j]而不是su[j+1]
}
}
for (int i = 1; i <= 1000; i++)
{
if (f[i] == 0)
cout << i << ' ';
}
return 0;
}

浙公网安备 33010602011771号