c++ - 使用递归进行质因数分解

标签 c++

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

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

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

 10 // Void function "showFactors" that takes in an int "number" and another     int "factor", which is initialized to 2
 11 void showFactors(int number, int factor = 2)
 12 {
 13
 14   if (number<2) //returns nothing if number<2
 15   {
 16     return;
 17   }
 18   if (number%factor==0) //modulus function is used to get prime  factorization
 19   {
 20     cout<<factor<<" ";
 21     showFactors(number/factor, factor); //recursive call
 22   }
 23   else //if (number%factor != 0) //this modulus function is used in order to output factor !=2  
 24   {
 25     showFactors(number, factor+1);
 26   }
 27 }

我觉得应该有一个简单的修复方法,只需重新安排 cout 调用的位置即可,但到目前为止我还没有任何运气。

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

最佳答案

#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;
}

关于c++ - 使用递归进行质因数分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607725/

相关文章:

c++ - 计算表达式字符串由 std::map 中的键组成

c++ - 如何将图像,表格和纯文本导出到MS Word?

c++ - 当以相同方式调用时,函数的 Constexpr 版本会给出不同的结果

c++ - MFC 对话框数据验证失败时恢复数据

按字符串名称的 C++ 通用对象工厂

c++ - 创建 is_primitive 或 is_inheritable 模板

c++ - 解决运算符歧义

c++ - 如何检测我的应用程序是作为服务运行还是在交互式 session 中运行?

用于处理多个 HTTP 连接的 C++ 库

c++ - QQuickWidget 将信号从 C++ 发送到 QML 中的插槽