c++ - 质因数分解

标签 c++ prime-factoring

我这里有一个简单的因式分解算法。

void primeFactor(int number){
    if (number == 1)return;

    int x = 2;
    while (number%x != 0)x++;

    cout << x << endl;
    primeFactor(number / x);
}

它对于小数字工作得很好,但是当我输入像 809800987876 这样的大数字时,大约 3 个因子后我会得到 -1。

这是 809800987876 的示例输出。

> 2 2 486957767
> -1

我该如何解决这个问题?

最佳答案

您溢出了int。在典型系统上,int 的最大值为 2147483647。809800987876 比该值大,因此会溢出。您可以使用 long long,其最大值至少为 9223372036854775807。

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

相关文章:

python - 如何生成一个数字的所有可能的除数积?

C++ 和 boost 库

c++ - 在 C++ 中预先创建对象

java - 质因数分解计算器中的 for 循环显示合数并且循环不会重新启动

Python:错误的输出和 ValueError:素因数创建者

c++ - 以幂形式打印整数的素因数 ( ^ )

java - 需要帮助计算每个数字到给定数字的不同质因数的数量

c++ - 使用 libxml 解析 XML

c++ - VC++中使用的不同符号

c++ - 为什么我在分析器中看到 __scalbnf?