3n+1问题

猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1.

例如:3->10->5->16->8->4->2->1。输入n,输出变换次数。n<=109

#include<iostream>
using namespace std;

int main()
{
    long long n; // 如果n是奇数,会超出int:-2147483648 ~ 2147483647. 
    int cnt = 0; 
    cin >> n;
    while(n > 1)
    {
        if(n%2 == 1) n = 3*n+1;
        else n /= 2;
        cnt++; 
    }
    cout<<cnt;
    return 0;
}

 

posted @ 2022-09-11 15:53  Hi,小董先生  阅读(73)  评论(0)    收藏  举报