为什么我的长长溢出/变成负的整数除法

Why is my long long overflowing / turning negative on integer division?

本文关键字:整数 除法 我的 溢出 为什么      更新时间:2023-10-16
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(因此没有任何其他因子)。