求助!!3n+1 问题怎么做?
题目:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1.例如:3—》10—》5—》16—》8—》4—》2—》1.
输入n,输出变换的次数。n<=10^9(10的9次方)。
样例输入:3
样例输出:7
程序代码:
root@~ #cat 1.c
#include <stdio.h>
int main (void) {
int n,m=0;
scanf("%i",&n);
do {
if(n%2==0) {
n/=2;printf ("%i ",n);
}else{
n=3*n+1; printf ("%i ",n);
}
m++;
}while(n!=1);
printf ("\nChange counts is=%i\n",m);
return 0;
}
root@~ #./1
3
10 5 16 8 4 2 1
Change counts is=7
root@~ #./1
5
16 8 4 2 1
Change counts is=5
root@~ #
