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
等,以防它出现类型问题。同样,它肯定与分区部分有关,但我对数据类型不够熟悉,无法立即解决问题。
答案 0 :(得分:2)
问题可能是最终条件。您循环,而 j
超过2 或 factored_num
不是1,因此如果factored_num
未成为1,则循环不会结束,j将继续减少到负数。
我希望条件为j > 2 && factored_num != 1
,即如果j
为2或更小,您希望结束(为什么2; 2是有效因素)或factored_num为1(因此没有任何其他因素)。