使用递归的素数因子分解

时间:2016-09-21 04:43:20

标签: c++

我的程序当前按升序输出正整数的素数因子分解。我正在试图弄清楚如何设置函数,以便它按降序输出数字。

例如,showFactors(100)当前输出“2 2 5 5”。

相反,我希望它输出“5 5 2 2”。

public void CreateGroups(string[] groups)
{
    Groups.AddRange(Context.ConnectionId, groups);
}

我觉得应该通过简单地重新排列cout呼叫的位置来进行简单的修复,但到目前为止我还没有运气。

编辑:是的,它就像切换第20行和第21行一样简单。

2 个答案:

答案 0 :(得分:2)

#include <iostream>
using namespace std;
void sf (int number,int factor=2)
{
    if (number<2)
        return;
    if (number%factor == 0)
    {
        sf (number/factor,factor);
        cout<<factor<<"\t";
    }
    else
        sf (number,factor+1);
}

int main ()
{
    sf (1729);
    cout<<"\n";

    return 0;
}

答案 1 :(得分:0)

这是我的Ruby解决方案,用于获取给定数量的素数的列表。也许会帮助某人

def prime_factorization(num)
    (2...num).each do |fact|
        if (num % fact == 0)
            otherFact = num / fact
            return [ *prime_factorization(fact), *prime_factorization(otherFact) ]
        end
    end

    return [num]
end