1. 素数的线性筛法
原理:任何一个大于1的非质数,都可以分解成唯一一组质数的乘积
#include<cstdio> // 素数的线性筛法
#include<iostream>
using namespace std;
int const MAXN=10000;
int prime[MAXN]; // 存储质数
bool label[MAXN]; // 标记
void ha_prime(int n)
{
int kk = 0;
label[0]=1;
label[1]=1;
for(int i=2;i <= n;++i) // 核心代码
{
if(!label[i])
prime[kk++]=i;
for(int j=0; j < kk and i*prime[j] <= n;++j)
{
label[i*prime[j]] = 1;
if(i%prime[j] == 0) break;
}
}
}
int main()
{
int t;
cin >> t;
ha_prime(t);
for(int i=1;i<=t;++i)
{
if(label[i]) cout << i << endl;
else printf("%d Prime\n",i);
}
return 0;
}