1976年的一天,《华盛顿邮报》于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩弄一种数学游戏,这个游戏十分简单,任意写出一个(非零)自然数N,并且按照以下规律进行变换:

  1. 如果是个奇数,则下一步变成 3N+1
  2. 如果是个偶数,则下一步变成 N/2

一时间学生、教师、研究员、教授,甚至是一等一的数学大拿、天才都纷纷加入这个看似简单的数学游戏,人们取了各种各样的数字N去检验这个算法,最终都无一例外地坠入自然数序列4-2-1,于是就自然萌生出这样的猜想:对于任意非零自然数N,经上述变换最终都将落入4-2-1序列的宿命。这就是著名的角谷猜想,或称冰雹猜想。

冰雹猜想最大的魅力,在于其不可预知性,数字N的转化过程变幻莫测,有些平缓温和,有些剧烈沉浮,但却都无一例外地会坠入4-2-1的谷底,这好比是一个数学黑洞,将所有的自然数牢牢吸住。有人把冰雹路径比喻一个参天大树,下面的树根是连理枝4-2-1,而上面的枝枝叶叶则构成了一个奥妙的通路,把一切(非零)自然数统统都覆盖了,这个小学生都看得懂的问题,迄今为止却没有任何数学手段和超级计算机可以证明。

冰雹猜想跟蝴蝶效应恰好相悖,蝴蝶效应蕴含的原理是:初始值的极小误差,会造成结果的巨大不同,而冰雹猜想恰好相反:无论刚开始存在多大的误差,最后都会自行修复,直到坠入谷底。

C语言编程实现:找出程序所能表达的最大整数的范围内,变换路径最长的纪录保持者。

#include<stdio.h>
#include<stdint.h>
#include<math.h>
/*
功   能:对输入的参数进行冰雹猜想变换,得到1时返回已经变换的次数,
参   数:num 输入一个非零自然数
返回值: 变换得到1时经过的变换次数
*/
long double bingbao(long double num)
{long double count=0;while(1){if(fmodl(num,2)==1)//如果是奇数{num = 3*num+1;count++;}else if(fmodl(num,2)==0)//如果是偶数{num = num/2;count++;}//printf("%Lg\n",num);if(num == 1)break;}return count;
}
int main()
{long double num,num_find,count_new=0,count_old=0,len_1=0,len_2=0;printf("我可以找出你给定范围内冰雹猜想变换次数最多的自然数\n");printf("请输入一个范围:\n");printf("起始数:");scanf("%Lf",&len_1);  printf("末尾数:");scanf("%Lf",&len_2);if(len_1>=len_2){printf("输入错误:起始数应该小于末尾数!\n");return 1;}     num = len_1;while(num<len_2){count_new = bingbao(num);if(count_new>count_old){count_old = count_new;num_find = num;}num++;}printf("在你给定的%Lg----%Lg范围内\n",len_1,len_2);printf("变换次数最多的是自然数是%Lg\n",num_find);printf("它经过%Lg次变换后开始得到1\n",count_old);printf("变换路径如下:\n");while(1){printf("%Lg-->",num_find);if(fmodl(num_find,2)==1)//如果是奇数{num_find = 3*num_find+1;}else if(fmodl(num_find,2)==0)//如果是偶数{num_find = num_find/2;}    if(num_find == 1)break;}printf("1\n");return 0;
}

运行结果:linux下运行结果

C语言编写冰雹猜想(角谷猜想)相关推荐

  1. [角谷猜想 || 冰雹猜想]的一些瞎想

    早上睡醒躺床上不想起来,想到一个好玩的东西:     任意数字,如果是偶数,就除以2:如果是奇数,乘以一个奇数o并加一(奇数乘以奇数必定是奇数,加一变偶数):反复进行这个步骤,最后这个动荡的数列会不会 ...

  2. matlab验证角谷猜想问题,角谷猜想1.5编程基础之循环控制21

    一道基础的ACM数学编程题 纠结下,k-base这是指k进制,不是指k位的数.这个题的意思是,找出n的个数,n的意思是,能被一个多位数整除,同时该每个数相加后也能被整除.下面说下为什么这个多位数(m位 ...

  3. LQ0052 冰雹数【枚举+角谷猜想】

    题目来源:蓝桥杯2016初赛 C++ C组H题 题目描述 任意给定一个正整数N,如果是偶数,执行: N / 2:如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过 ...

  4. python角谷猜想详细步骤_用python3.7编写考拉兹猜想 -

    你听说过考拉兹猜想吗?就是随便选一个大于1自然数,如果是奇数就乘3加1,如果是偶数就除2,如此循环,最后结果一定是1.考拉兹猜想又称为奇偶归一猜想.3n+1猜想.冰雹猜想.角谷猜想.哈塞猜想.乌拉姆猜 ...

  5. Python验证和可视化冰雹猜想、角谷猜想、考拉兹猜想

    推荐教材:<中学生可以这样学Python(微课版)>,董付国.应根球,清华大学出版社,ISBN:9787302554639 京东购买链接: =================== 问题描述 ...

  6. c语言问题 角谷猜想,hdu 1279 验证角谷猜想(简单的模拟)

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何 ...

  7. 奇偶归一猜想(多组数据)——又称为3n+1猜想、冰雹猜想、角谷猜想

    输入两个正整数a和b(1<a<b<1000),输出二者之间所有数的奇偶归一猜想的验证过程. [科普] 奇偶归一猜想,又称为3n+1猜想.冰雹猜想.角谷猜想等.其内容为"对于 ...

  8. 用Python实现冰雹猜想(3n+1猜想,角谷猜想,叙古拉猜想)的黑洞演示

    目录 一.冰雹猜想的来由 二.实现方法 1.定义根据规则生成新数的函数 2.定义生成列表的函数 3.定义主函数 三.完整代码 四.部分代码分析 五.输出结果 1.输入4 2.强悍的27 总结: 前面完 ...

  9. 角谷猜想(Collatz conjecture)--用 python 语言实现

    老师布置的一个小作业–用python代码实现角谷猜想,下面就给大家提供一个思路,供大家参考. ''' 角谷猜想: n 是一个自然数 如果 n 是奇数,则 n = 3 * n + 1 如果 n 是偶数, ...

最新文章

  1. java的内部类和匿名类剖析
  2. 实现TcpIp简单传送
  3. 罗永浩回应“鲨鱼皮技术遭质疑”;消息称马蜂窝开启裁员;Dart 2.7 发布 | 极客头条...
  4. windows下MongoDB数据库的安装
  5. 智能优化算法:猫群优化算法-附代码
  6. prepareStatament和Statement和callableStatement的区别
  7. 渗透工具-masscan
  8. java cim客户端_高效使用 SBLIM CIM Client
  9. 如何通过蒲公英批量获取iPhone设备的udid
  10. android上的壁纸软件,那些简约、精美、极致的安卓软件(APP) 篇四:这7个APP,满足你对壁纸所有的向往...
  11. css钢铁侠视角,css练习制作钢铁侠胸口的小型核反应堆
  12. Ubuntu 终端窗口操作快捷键
  13. 十一月 Z 星月度速览 | 个性化推荐技术解读、Mivus demo 服务框架切换缘解、精选好书推荐、AI 收藏夹……...
  14. 台式电脑怎么添加计算机硬盘,如何在台式电脑增加硬盘的安装及设置方法
  15. 【STM32】HAL库 STM32CubeMX教程九---ADC
  16. [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space
  17. 虎年,用Python画一个小老虎,祝大家新年虎虎生威,大吉大利
  18. Python实现桌面壁纸设置
  19. Linux内核--链表结构
  20. UTC时间与北京时间相互转换

热门文章

  1. ethtool 开启网卡_Linux下使用ethtool满速网卡速率
  2. 01 C语言指针专题
  3. 自制安卓背单词小软件(1)
  4. 弘辽科技:电商市场竞争激烈!如何快速提高店铺竞争力站稳脚跟?
  5. 联想Yoga 13s重装系统
  6. 浅谈互联网金融测试平台规划
  7. 如何获取网页上的LOGO
  8. 如何创建Windows服务
  9. sql查询中截取字符串
  10. 贪吃蛇java设计代码下载_java贪吃蛇游戏源代码