描述
给你一个数N,如果这个数可以由2个质数相乘得到,输出Yes,否则输出No。
输入包含多组数据。
思路
直接分解质因数,如果分解的是两个,就cout<<yes
,否则cout<<no
代码
#include<bits/stdc++.h>
using namespace std;
int SplitToPrime(int a) {
int s = 0;
for (int i = 2; i <= a / i; i++) {
if (a % i == 0) {
while (a % i == 0) {
a /= i;
s++;
}
}
}
if (a > 1) s++;
return s;
}
bool IsPrime(int n) {
for (int i = 2; i <= n / i; i++) {
if (n % i == 0)
return false;
}
return true;
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
if (IsPrime(n)) {
cout << "No\n";
continue;
}
int stp = SplitToPrime(n);
if (stp == 2) {
cout << "Yes\n";
} else {
cout << "No\n";
}
}
return 0;
}
标签:输出,数字,int,分解,拆分,IsPrime,cout
From: https://www.cnblogs.com/algorithm-hu/p/18310047