1 条题解

  • 0
    @ 2025-11-23 21:53:42

    C++ :

    #include <iostream>
    using namespace std;
     
    int main() {
        long long n, a;
        int p = 0; // 标志变量,控制乘号输出
        cin >> n;
        a = n;
     
        // 遍历可能的质因数,从2开始到i*i <=n
        for (long long i = 2; i * i <= n; i++) {
            if (a % i == 0) { // 发现质因数i
                int s = 0;
                while (a % i == 0) { // 除尽所有i的因子
                    a /= i;
                    s++;
                }
                // 输出格式处理
                if (p) cout << "* ";
                if (s != 1) cout << i << "^" << s << " ";
                else cout << i << " ";
                p = 1; // 标记已有因数输出
            }
        }
     
        // 处理剩余质因数
        if (a != 1) {
            if (a != n) cout << "* " << a; // 分解后的剩余质数
            else cout << a; // n本身是质数
        }
        return 0;
    }
    

    信息

    ID
    5657
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者