分析:
枚举每个数 不是质数就可以把它及它的因数记录下来
v
e
c
t
o
r
vector
vector可以防止炸数组
发现要排序 所以直接存进小根堆就行了!!!
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define reg register
using namespace std;
typedef long long ll;
int n,a[1005],N;
priority_queue<int,vector<int>,greater<int> > ans[10005];
bool isprime(int x)
{
if(x==1) return 0;
for(reg int i=2;i*i<=x;i++)
if(x%i==0) return 0;
return 1;
}
int main(){
scanf("%d",&n);
for(reg int i=1,x;i<=n;i++)
{
scanf("%d",&x);
N=max(N,x);
if(isprime(x))
{
ans[x].push(x);
continue;
}
for(reg int j=2;j*j<=x;j++)
if(x%j==0)
{
ans[j].push(x);
break;
}
}
for(reg int i=2;i<=N;i++)
{
if(ans[i].empty()) continue;
else
{
printf("%d ",i);
while(!ans[i].empty())
{
printf("%d ",ans[i].top());
ans[i].pop();
}
printf("\n");
}
}
return 0;
}