题意
求 ∏ a [ i ] \prod a[i] ∏a[i]的最小合数因数。
思路
对a[i]进行质因数分解,找到最小的两个质因数,输出他们的积。
代码
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int T,tot,n,a[101],x,y;
for (scanf("%d",&T);T--;)
{
scanf("%d",&n);
for (int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+1+n);
tot=0;
x=y=2147483647;
for (int i=1;i<=n;++i)
{
for (int j=2;j<=sqrt(a[i]);++j)
{
while (a[i]%j==0)
{
if (j<y)
if (j<x) y=x,x=j;
else y=j;
else break;
a[i]/=j;
}
}
if (a[i]!=1)
{
if (a[i]<y)
{
if (a[i]<x) y=x,x=a[i];
else y=a[i];
}
}
}
if (y==2147483647) printf("-1\n");
else printf("%lld\n",1ll*x*y);
}
}