拆分数字

描述

给你一个数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;
}

posted on   可爱楷玩算法  阅读(12)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示