입력 내용으로 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'가 오버 플로우 될 수 있습니다. –