1001. 害死人不偿命的(3n+1)猜想

题目描述:

对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么(3n+1)砍掉一半,这样一直反复砍下去,最后一定在某一步得到n=1。

要求:给定任意不超过1000的正整数n,需要多少不才能得到n=1。

输入:一个自然数n

输出:从n到1需要的步数

例:

输入:3

输出:5

代码如下:

#include
int main()
{
    int n;
    int k=0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==1)
        {
            n=(3*n+1)/2;
            k++;
        }
        else
        {
         n=n/2;
         k++;
        }
    }
    printf("%d",k);
    return 0;
}

你可能感兴趣的:(pat)