私のコードには2^31 - 1を入力として渡すことができないという論理的欠陥があります。ここに私のコードの断片があります。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;
}
入力のサイズをlong => long longに変更しようとしましたが、デバッグ後にこの領域内にまだ詰まっています。フィードバックをお願いします。ありがとうございます!
ちょっと、Collatzの推測が間違っていることが証明されている可能性がありますか? Naah .. –
ループ内に 'temp'を表示して何が起きているのを見るのですか? –
ある時点で 'temp'をオーバーフローさせることができます。 –