我的代碼中有一個邏輯缺陷,我似乎無法通過2^31 - 1作爲輸入。這是我的代碼片段。卡住在循環Collatz猜想在C
#include <stdio.h>
int main() {
long input = 0;
long temp = 0;
int count = 0;
printf("Enter a positive integer (or 0 to quit): ");
scanf("%ld", &input);
if(input == 0)
{
printf("Quit.");
}
else
{
temp = input;
while (temp != 1)
{
if(temp %2 ==0)
{
temp = temp/2;
count++;
} else
{
temp = 3*temp + 1;
count++;
}
}
return 0;
}
我已經嘗試改變我的輸入大小爲長=> long long,並且在調試它之後它仍然卡在這個區域內。請提供一些反饋謝謝!
嘿,難道你證明Collatz猜想是錯誤的嗎? Naah .. –
如何在循環中打印「temp」並查看發生了什麼? –
它可以在某個時候溢出'temp'。 –