В моем коде есть логический недостаток, который, по-видимому, не может передать 2^31 - 1 в качестве входного сигнала. Вот фрагмент моего кода.Stuck in Loop 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;
}
Я попытался изменить размер моего входа долго => долго долго, и она до сих пор застревают в этой области после ее отладки. Пожалуйста, предоставьте некоторую обратную связь. Спасибо!
Эй, может быть, вы доказали, что гипотеза Collatz неверна? Naah .. –
Как насчет печати 'temp' в цикле и посмотреть, что происходит? –
В какой-то момент он может просто переполнить 'temp'. –