Problem - 1294C - Codeforces
解析:
首先这个数肯定不是质数,然后找到第一个因子p,对于n/p再判断质数,然后找到另外两个因子即可。
注意三个因子不能相同。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int t,n,a[N];
bool check(int x){
if(x<2) return false;
for(int i=2;i<=x/i;i++) if(x%i==0) return false;
return true;
}
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
if(check(n)) puts("NO");
else{
int p=0,q=0;
for(int i=2;i<=n/i;i++){
if(n%i==0){
p=i;
n/=i;
break;
}
}
if(check(n)) puts("NO");
else{
for(int i=2;i<=n/i;i++){
if(n%i==0&&i!=p){
q=i;
n/=i;
break;
}
}
if(p&&q&&p!=n&&q!=n) printf("YES\n%lld %lld %lld\n",p,q,n);
else puts("NO");
}
}
}
return 0;
}