线性筛 欧拉筛

#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;
}
posted @ 2024-12-17 13:31  闫柏军  阅读(19)  评论(0)    收藏  举报