我这里有一个简单的因式分解算法。
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/