for (long long j = factored_num / 3; j > 2 || factored_num != 1; j -= 2) {
在64位计算机上,我正在尝试分解数字。当使用
long long j = factored_num
时,此代码工作得很好,但是当我进行整数除法时,cout << j
显示j
为负-我假设它溢出。我怎样才能解决这个问题?我已经尝试过
3LL
,j-= 2LL
等,以防出现类型问题。同样,它肯定与除法部分有关,但是我对数据类型不够熟悉,无法立即解决问题。 最佳答案
问题可能是最终条件。当 j
大于2或 factored_num
不为1时,您循环,因此,如果factored_num
不为1,则循环不会结束,并且j将继续递减为负数。
我希望条件是j > 2 && factored_num != 1
,也就是说,如果j
为2或更少(为什么2; 2是有效因子)或factored_num为1(因此没有更多因子),则您想结束。
关于c++ - 为什么我的长整长溢出/对整数除法变为负数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8574158/