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 @   Hi,小董先生  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示