好像自己写成了一个大分讨》》
12分代码求差错
#include<bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
const int N=1e6+6;
const int IM=2147483647;
const long long LLM=9223372036854775807;
inline int read()
{
int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
return x*y;
}
/*
观察样例,根据gcd和lcm的性质,想到两数若不互质所能造成的影响
容易发现,若有2个数以上的数互质,则必然无解
可以考虑在输入时记录其最小的非零质因子
*/
int n,a[N];
map<int,int>mp;
void init()
{
mp.clear();
}
void solve()
{
init();
int pd1=0,pd2=0,pd3=0;;
n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
int pd=0;
for(int j=2;j*j<=a[i];j++)
{
if(a[i]%j==0)
{
mp[j]++;
if(mp[j]==1) pd1++;//多个
if(mp[j]==2) pd2++;//有两个的话说明只要不是只有这俩,一定不对
if(mp[j]>2) pd3++;
pd=1;
break;
}
}
if(!pd)
{
mp[a[i]]++;
if(mp[a[i]]==1) pd1++;
if(mp[a[i]]==2) pd2++;
if(mp[a[i]]>2) pd3++;
}
}
// printf("%d %d %d\n",pd1,pd2,pd3);
if(n==2) puts("Yes");
else if(pd3) puts("No");
else if(pd1&&pd2) puts("No");
else if(pd1||pd2) puts("Yes");
else puts("No");
}
signed main()
{
int T=read();
while(T--) solve();
return 0;
}