题目来源:https://codeforces.com/contest/1176/problem/D 

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define PB push_back
#define endl '\n'
#define PII pair<int,int>
#define FI first
#define SE second
#define POP pop_back
const int N=4e6;
const int INF=1e8,mod=1e7+7;
int n,m,k;
vector<int>v;
int f[N<<1];
int ff[N<<1];
int s[N<<1];
int a[N];
int p,q;
int b[N],c[N];
int ss[N];
int main()
{
    for(int i=2;i<=N;i++){
        if(!f[i]){
            v.PB(i);
        }
        for(int j=i*2;j<=N;j+=i){
            f[j]=i;
        }
    }
    //cout<<v.size();
    cin>>n;
    int cct=0,cot=0;
    for(int i=1;i<=n*2;i++){
        scanf("%d",&a[i]);
        if(f[a[i]])b[cct++]=a[i];
        else c[cot++]=a[i];
    }
    sort(b,b+cct);
    for(int i=cct-1;i>=0;i--){
        if(s[b[i]])s[b[i]]--;
        else{
            printf("%d ",b[i]);
            s[f[b[i]]]++;
        }
    }
    sort(c,c+cot);
    for(int i=0;i<cot;i++){
        if(s[c[i]])s[c[i]]--;
        else{
            printf("%d ",c[i]);
            //cout<<c[i]<<' '<<v[c[i]-1]<<endl;
            if(c[i]<=199999)
            s[v[c[i]-1]]++;
        }
    }
	return 0;
}