根号n范围内一定有2个因子才是YES n不断变化除以因子
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define endl '\n'
const int maxn=2e5+5;
ll n,t;
ll a,b,c;
map<int,bool> vis;
int main()
{
cin>>t;
while(t--){
cin>>n;
vis.clear();
a=0,b=0,c=0;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
a=i;
n/=i;
vis[i]=1;
break;
}
}
if(a==0){
cout<<"NO"<<endl;
continue;
}
for(int i=a+1;i<=sqrt(n);i++){
if(n%i==0){
b=i;
n/=i;
vis[i]=1;
break;
}
}
if(b==0)
{
cout<<"NO"<<endl;
continue;
}
if(n>1 && !vis[n])
c=n;
if(c==0)
{
cout<<"NO"<<endl;
continue;
}
cout<<"YES"<<endl;
cout<<a<<" "<<b<<" "<<c<<endl;
}
return 0;
}
在这里插入代码片