博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
害死人不偿命的(3n+1)猜想-PTA
阅读量:4616 次
发布时间:2019-06-09

本文共 733 字,大约阅读时间需要 2 分钟。

卡拉兹(Callatz)猜想:

对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?

输入格式:

每个测试输入包含 1 个测试用例,即给出正整数 n 的值。

输出格式:

输出从 n 计算到 1 需要的步数。

输入样例:

3

输出样例:

5

代码:

package mainimport "fmt"func main() {    //定义变量 n 保存终端输入的值    var n int    //获取终端输入的数    _, _ = fmt.Scanln(&n)    //定义变量 num 记录步数    var num = 0    //循环计算,直到n = 1为止    for n != 1 {        if n % 2 == 0 {            n /= 2        } else {            n = (3 * n + 1) / 2        }        num++    }    fmt.Printf("%d", num)}

720430-20190520213237800-1800253509.png

转载于:https://www.cnblogs.com/itbsl/p/10896664.html

你可能感兴趣的文章
二级标题左侧加粗线条
查看>>
LeetCode 970. Powerful Integers (强整数)
查看>>
linux内核里的字符串转换 ,链表操作常用函数(转)
查看>>
解决因删除app唯一标识设备号改变情况(存储到钥匙串中)
查看>>
iOS中使用Fastlane实现自动化打包和发布
查看>>
C++ primer 第八章笔记
查看>>
使用Harbor+Auzre IOT Edge构建智能边界
查看>>
react native 在window 7上配置开发环境-Andorid
查看>>
嵌入式Linux与WinCE的优缺点比较
查看>>
Idea远程调试
查看>>
webpack之傻瓜式教程(转载)
查看>>
分享21个超棒的单页面网站设计
查看>>
Java Native Interface Specification Contents 翻译
查看>>
随笔⑥ 关于线程 --- 线程操作的主要方法
查看>>
转:解开Android应用程序组件Activity的”singleTask”之谜
查看>>
Virtex6 GTX设计总结:预加重、均衡、输出振幅的值
查看>>
fork和exec函数
查看>>
fs/ext2/inode.c相关函数注释
查看>>
HTTP无状态协议详解
查看>>
nodejs mongodb 查询要看的文章
查看>>