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개 응답

  1. 
                  snowall
                  아바타

    리눅스에서 64비트 정수를 표현할 때 씁니다.

    윈도에서 INT64 랑 같은 자료형이고 이름만 달라요.

  2. 
                 goldenbug
                 아바타

    long long X 라고 하면 어떻게 되는거죠?

    제가 C를 배울 때는 long이 두 번 겹치는 건 없었는데, 버전이 바뀌면서 새로 생긴건가요??

goldenbug 에 응답 남기기응답 취소

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