글
가설: 어떤 임의의 자연수를 생각하자. 그 자연수가 짝수면 2로 나누고 홀수면 3배하여 1을 더한다. 그 결과로 얻어진 자연수에 같은 조작을 반복한다. 그럼 언젠가 반드시 1이 된다.
그 문제에 도전하는 C프로그램이다.
#include<stdio.h>
#include<stdlib.h>
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;
}
그 문제에 도전하는 C프로그램이다.
#include<stdio.h>
#include<stdlib.h>
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;
}
RECENT COMMENT