3n+1 문제

가설: 어떤 임의의 자연수를 생각하자. 그 자연수가 짝수면 2로 나누고 홀수면 3배하여 1을 더한다. 그 결과로 얻어진 자연수에 같은 조작을 반복한다. 그럼 언젠가 반드시 1이 된다.

그 문제에 도전하는 C프로그램이다.

#include

#include

long long evenodd(long long);

long long length(long long);

int main(){

long long i,leng,t,keep;

leng=1ll;

keep=1;

i=1000000ll;

while(i){

t=length(i);

if(leng<=t){
leng=t;

keep=i;

}

i–;

}

printf(“%lld has length of %lld\n”,keep,leng);

}

long long evenodd(long long n){

if(n%2ll==0ll){

return n/2ll;

}

else{

return n*3ll+1ll;

}

}

long long length(long long l){

long long leng=1;

long long i=l;

while(i-1){

i=evenodd(i);

leng++;

}

printf(“%lld, %lld\n”,leng,l);

return leng;

}

3n+1 문제”에 대한 2개의 생각

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.