1300*C. Product of Three Numbers(质数&数学)

Problem - 1294C - Codeforces

1300*C. Product of Three Numbers(质数&数学)_第1张图片

1300*C. Product of Three Numbers(质数&数学)_第2张图片

解析:

        首先这个数肯定不是质数,然后找到第一个因子p,对于n/p再判断质数,然后找到另外两个因子即可。

        注意三个因子不能相同。

#include
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;
}

你可能感兴趣的:(codeforces,c语言,算法,开发语言,c++,质数)