programming challenges 3n+1 문제

4612123의 이미지

=ㅁ= 입력값 처리며, 결과값도 제대로 한거같은데.. 안되네요 왜일까요?ㅜㅁㅜ

#include <stdio.h>
#include <stdlib.h>
 
long CycleFun(long tmp);
 
int main()
{
	long i,j;
	long cycle=0,max_cycle=0;
	long tmp;
 
	scanf("%ld %ld",&i,&j);
 
	if(i <= 0 || j <= 0 || i >= 1000000 || j >= 1000000)
	{	
		printf("Input Error !! \n");
		exit(0);
	}
 
	tmp = i;
 
	while(tmp <= j)
	{
		cycle = CycleFun(tmp);
 
		if(cycle > max_cycle)
			max_cycle = cycle;
 
		tmp++;
	}
 
	printf("%ld %ld %d\n",i,j,max_cycle);
 
	return 0;	
}
 
long CycleFun(long tmp)
{
	long count=0;
 
	while(tmp!=1)
	{
		if(tmp%2 == 0)
			tmp = tmp/2;
 
		else
			tmp = tmp*3 + 1;
 
		count++;
	}
 
	return count+1;
}

lovian의 이미지

max_cycle의 초기 값이 0이라,
계속 조건문이 false로 처리되는거네요.
-----------------
한글을 사랑합니다.

-----------------
한글을 사랑합니다.

charsyam의 이미지

해당 범위안에 딱 하나의 수가 long 범위를 넘어가서 무한루프에 빠집니다.

-로 가버려서

그러므로 long 을 unsigned long 으로 바꿔보세요.

고운 하루되시길..

=========================
CharSyam ^^ --- 고운 하루
=========================

=========================
CharSyam ^^ --- 고운 하루
=========================