#include<bits/stdc++.h>
using namespace std;
const int N = 10e5 + 10;
int prime[N];//存素数的数组
bool st[N];//st[i] = 0表示为素数 = 1为合数
int cont;
void isPrime(int n)
{
for(int i = 2;i <= n;i++)
{
if(st[i] == 0) prime[cont++] = i;
for(int j = 0;prime[j] <= n / i;j++)
{
st[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
}
int main()
{
int n,maxx = 0;
cin >> n;
int a[n];
for(int i= 0;i < n;i++)
{
cin >> a[i];
maxx = max(maxx,a[i]);
}
isPrime(maxx);
for(int i = 0;i < n;i++)
{
for(int j = 0;j < maxx;j++)
{
if(a[i] == prime[j]) cout << a[i] << " ";
}
}
}
线性筛(c++)
最新推荐文章于 2025-03-18 21:49:12 发布