素数因子化

时间:2015-12-02 14:09:54

标签: 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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你正在溢出int。在典型系统上,long long的最大值为2147483647. 809800987876大于该值,因此溢出。您可以使用至少最大为9223372036854775807的{{1}}。