【51nod】 最小约数 V2
题目
解题思路
用vector,防止爆数组
先将所有数排序,满足输出要从小到大
然后求出每个数除1外的最小约数
最后输出答案
代码
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int n,ma,a[1010];
vector<int> p[10010];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for (int i=1;i<=n;i++)
{
int fla=1;
for (int j=2;j*j<=a[i];j++)
if (a[i]%j==0)
{
p[j].push_back(a[i]);
fla=0;
break;
}
if (fla) p[a[i]].push_back(a[i]);
}
for (int i=2;i<=10000;i++)
{
if (p[i].size())
printf("%d ",i);
else continue;
for (int j=0;j<p[i].size();j++)
printf("%d ",p[i][j]);
printf("\n");
}
return 0;
}