#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define M 2000000000
#define INF 2000000000
int ons = 0,ans = 0;
int prime[100000];
int v[4000];
void init(){
for(int i = 2;i<=(int)sqrt(1.0 * M + 0.5);i++){
int j,longth = (int)sqrt(1.0 * i+0.5);
for( j = 2;j<=longth;j++){
if(i%j == 0)break;
}
if(j == longth+1)prime[ons++] = i;
}
//prime[ons++] = INF;
}
void update(int u){
int xx = u;
int i = 0;
for(;prime[i]<=(int)sqrt(1.0*xx+0.5)&&u>1;){
if(u%prime[i] == 0){
v[ans++] = prime[i];
u /= prime[i];
}else i++;
}
if(u>1)v[ans++] = u;
}
int main(){
int t;
init();
scanf("%d",&t);
while(t--){
int n;
ans = 0;
scanf("%d",&n);
int x;
for(int i = 0;i<n;i++){
scanf("%d",&x);
if(x!=1)update(x);
}
sort(v,v+ans);
if(ans <2)puts("-1");
else printf("%I64d\n",(__int64)(v[0]) * (__int64)(v[1]));
}
}
唯一分解
最新推荐文章于 2021-10-03 18:53:22 发布