拆分数字

描述

给你一个数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 2024-07-18 17:52  可爱楷玩算法  阅读(3)  评论(0编辑  收藏  举报

导航