经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
【JavaScript PAT乙级】1001 害死人不偿命的(3n+1)猜想
来源:cnblogs  作者:moonskies  时间:2021/1/25 11:11:28  对本文有异议

 

卡拉兹(Callatz)猜想:

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

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

输入格式:

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

输出格式:

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

 

JavaScript代码:

  1. var readline = require('readline')
  2.  
  3. const rl = readline.createInterface({
  4. input: process.stdin,
  5. output: process.stdout
  6. })
  7.  
  8. rl.on('line', function(line) {
  9. var n = parseInt(line)
  10. var ret = callatz(n)
  11. console.log(ret)
  12. })
  13.  
  14.  
  15. function callatz(n) {
  16. var step = 0
  17.  
  18. while (n > 1) {
  19. if (n % 2 == 0) {
  20. n /= 2
  21. } else {
  22. n = (3 * n + 1) / 2
  23. }
  24.  
  25. step += 1
  26. }
  27. return step
  28. }

  

 

原文链接:http://www.cnblogs.com/moonskies/p/13738201.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号