我这里有一个简单的分解算法。
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
我该如何解决这个问题?
答案 0 :(得分:2)
你正在溢出int
。在典型系统上,long long
的最大值为2147483647. 809800987876大于该值,因此溢出。您可以使用至少最大为9223372036854775807的{{1}}。