top1编程
← 返回题目
题解

分解因数

1 条题解

  • 0
    @ 2026-7-28 22:45:18
    #include <bits/stdc++.h>
    using namespace std;
    //返回数字k分解成由大于等于st的因数乘积的形式的分解方案数 
    int solve(int k, int st)
    {
        if(k == 1)//k为1表示分解结束,形成1种方案 
            return 1;
        int ct = 0;
        for(int i = st; i <= k; ++i)
        {
            if(k%i == 0)
                ct += solve(k/i, i);//分解方案增加:将k/i分解成因数最小为i的分解方案数。 
        }
        return ct; 
    }
    int main()
    {
    	int n, a;
    	cin >> n;
    	while(n--)
        {
            cin >> a;
            cout << solve(a, 2) << endl;//分解数字a,因数大于等于2 
        } 
    	return 0;
    }
    
    • 1