角谷定理说: 任何一个正整数,如果是偶数,则除以2,如果是奇数则乘以3再加1,如此反复,必能最终得到1。
这里不要求你证明这个定理,只需要验证10000以内的所有整数哪个经过了最长的步骤,最后才得到1, 并输出这个步骤。

比如对9,输出:

9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

/** 角谷定理说: 任何一个正整数,如果是偶数,则除以2,* 如果是奇数则乘以3再加1,如此反复,必能最终得到1。* * 这里不要求你证明这个定理,* 只需要验证10000以内的所有整数哪个经过了最长的步骤,* 最后才得到1, 并输出这个步骤。比如对9,输出:* 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1*/
import java.util.ArrayList;
import java.util.List;public class StringTest {public static void main(String[] args) {List<String> lst = new ArrayList<String>();int count = 0; // 循环中的计次int count2 = 0;// 当前最长的计次int num = 1;// 要确认的最长的角谷数int num0 = 1;int i = 1;for (int j = 1; j < 10000; j++) {count = 0;// 对每一个数先清零计次i = num0;while (i != 1) {if (i % 2 == 0) {i = i / 2;} else if (i % 2 == 1) {i = i * 3 + 1;}count++;}// 寻找最大次数的数,并把次数记录为count2,把这个数记为numif (count > count2) {count2 = count;num = num0;}num0++;// 寻找下一个}lst.add(String.valueOf(num));while (num != 1) {if (num % 2 == 0) {num = num / 2;lst.add(String.valueOf(num));} else if (num % 2 == 1) {num = num * 3 + 1;lst.add(String.valueOf(num));}count++;}System.out.println("10000以内的所有整数中,【"+lst.get(0)+"】经过了最长的步骤");System.out.println("共经历【"+count2+"】步");System.out.println("具体步骤如下:");System.out.println(lst);}
}
Conclusion
10000以内的所有整数中,【6171】经过了最长的步骤
共经历【261】步
具体步骤如下:
[6171, 18514, 9257, 27772, 13886, 6943, 20830, 10415, 31246, 15623, 46870, 23435, 70306, 35153, 105460, 52730, 26365, 79096, 39548, 19774, 9887, 29662, 14831, 44494, 22247, 66742, 33371, 100114, 50057, 150172, 75086, 37543, 112630, 56315, 168946, 84473, 253420, 126710, 63355, 190066, 95033, 285100, 142550, 71275, 213826, 106913, 320740, 160370, 80185, 240556, 120278, 60139, 180418, 90209, 270628, 135314, 67657, 202972, 101486, 50743, 152230, 76115, 228346, 114173, 342520, 171260, 85630, 42815, 128446, 64223, 192670, 96335, 289006, 144503, 433510, 216755, 650266, 325133, 975400, 487700, 243850, 121925, 365776, 182888, 91444, 45722, 22861, 68584, 34292, 17146, 8573, 25720, 12860, 6430, 3215, 9646, 4823, 14470, 7235, 21706, 10853, 32560, 16280, 8140, 4070, 2035, 6106, 3053, 9160, 4580, 2290, 1145, 3436, 1718, 859, 2578, 1289, 3868, 1934, 967, 2902, 1451, 4354, 2177, 6532, 3266, 1633, 4900, 2450, 1225, 3676, 1838, 919, 2758, 1379, 4138, 2069, 6208, 3104, 1552, 776, 388, 194, 97, 292, 146, 73, 220, 110, 55, 166, 83, 250, 125, 376, 188, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]

数组与动态数组_验证步骤相关推荐

  1. 静态数组和动态数组 内存分布

    数组是程序设计中是一个非常重要的概念.数组是一个用于收集大量类似数据的容器, 以及其每一个元素能被相同处理过程迭代来处理的一个抽象体. 创建数组一般有三种方式:全局/静态范围的数组,局部变量数组,申请 ...

  2. 数据结构之数组及动态数组剖析

    数据结构之数组及动态数组剖析 文章目录 数据结构之数组及动态数组剖析 概述 动态数组实现的原理 实践编写动态数组类 时间复杂度分析 数组对数器 参考代码 相关链接 公众号 参考 概述 数组是在程序设计 ...

  3. C++数组之动态数组

    目录 1.摘要 2.动态数组内存分配 1一维数组 2多维数组(以2维为例) 3.动态数组初始化 1默认初始化 2.自定义初始化 4.动态数组释放 5.例子 Gradebook类的实现 6.参考文章 1 ...

  4. vector,数组,动态数组效率测试

    对vector.数组.new创建的动态数组.预先reverse的vector测试代码如下: #include <iostream> #include <vector> #inc ...

  5. java封装数组_Java封装数组之动态数组实现方法详解

    本文实例讲述了Java封装数组之动态数组实现方法.分享给大家供大家参考,具体如下: 前言:在此之前,我们封装的数组属于静态数组,也即数组空间固定长度,对于固定长度的数组当元素超过容量时会报数组空间不足 ...

  6. java二维数组添加元素_Java二维数组与动态数组ArrayList类详解

    java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  7. 【15】Vue:02-Vue表单基本操作、表单修饰符、自定义指令、计算属性computed、侦听器watch、过滤器、生命周期、数组变异方法、替换数组、动态数组响应数据、图书列表案例、TODOS案例

    文章目录 day02 Vue常用特性 表单基本操作 表单修饰符 自定义指令 Vue.directive 注册全局指令 Vue.directive 注册全局指令 带参数 自定义指令局部指令 计算属性 c ...

  8. arraylist 初始化_Java二维数组和动态数组ArrayList 类

    Java二维数组 Java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  9. java 动态二维数组_Java数组、动态数组、二维数组的应用

    一.认识数组 1.容器的概念 ​用于存储数据的一块内存称为容器,生活中有很多容器,例如水杯,衣柜,以及存放"东西" ​存放在容器中的数据,称为"元素" 2.为什 ...

  10. C++ 数组、数组指针、指针数组、动态数组等详解

    文章目录 数组基础概念 数组的列表初始化 数组的赋值和拷贝?× 数组的维度 字符数组 复杂数组的解读 数组和指针 数组的遍历 多维数组 动态数组 数组基础概念 (1)数组大小固定. (2)存放类型相同 ...

最新文章

  1. UI设计培训中的扁平化理念
  2. ELK6.0已取消filebeat配置document_type
  3. Intellij IDEA中生成jar包
  4. eclipse 配置java路径_Java修改eclipse中web项目的server部署路径问题
  5. 计算机网络总结:第三章 运输层
  6. 都快 2022 年了,这些 Github 使用技巧你都会了吗?
  7. exchange 删除邮件
  8. 使用supervisor提高nodejs调试效率
  9. 机器学习实战 11- SVD
  10. 冒泡、选择、快速、归并、堆排序算法 python实现
  11. 数据结构 以数组的形式存储数据(c语言 干货满满)
  12. 一天狂点3.7万个赞! 男子因“点赞过多”被大众点评网处罚 法庭上吵翻
  13. Vue.js父与子组件之间传参 父向子组件传参   例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为ht
  14. 软件测试证述职报告ppt,实验室检测员的述职报告ppt
  15. 我见众生皆无意,唯有见你动了情(表白日记分享篇)
  16. vs2015 产品密钥
  17. Python基于改进Unet的新冠肺炎等级分割系统(源码&教程)
  18. 【论文阅读】Cross-domain Correspondence Learning for Exemplar-based Image Translation
  19. C++string用法
  20. SystemviewV3.12移到目标板

热门文章

  1. la是什么牌子_la是什么牌子 La Prairie莱珀妮品牌护肤品怎么样
  2. 解析旅游商业模式---共享旅游电商:这个行业大有可为!
  3. 淘宝卖家如何使用表单大师
  4. inter幻影峡谷安装ubuntu18.04
  5. jacob解决freemaker下载的word文档手机无法打开问题
  6. 大学物理简明教程第三版修订版课后习题详解
  7. FastConverter .FP3转换为几乎任何流行的格式
  8. python全栈生鲜电商_Django REST framework+Vue 打造生鲜电商项目(笔记十)
  9. 悟空CRM(基于jfinal+vue+ElementUI的前后端分离的开源CRM系统)
  10. ATFX:新西兰联储加息50基点,NZDUSD先涨后跌