C语言编写冰雹猜想(角谷猜想)
1976年的一天,《华盛顿邮报》于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩弄一种数学游戏,这个游戏十分简单,任意写出一个(非零)自然数N,并且按照以下规律进行变换:
- 如果是个奇数,则下一步变成 3N+1
- 如果是个偶数,则下一步变成 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语言编写冰雹猜想(角谷猜想)相关推荐
- [角谷猜想 || 冰雹猜想]的一些瞎想
早上睡醒躺床上不想起来,想到一个好玩的东西: 任意数字,如果是偶数,就除以2:如果是奇数,乘以一个奇数o并加一(奇数乘以奇数必定是奇数,加一变偶数):反复进行这个步骤,最后这个动荡的数列会不会 ...
- matlab验证角谷猜想问题,角谷猜想1.5编程基础之循环控制21
一道基础的ACM数学编程题 纠结下,k-base这是指k进制,不是指k位的数.这个题的意思是,找出n的个数,n的意思是,能被一个多位数整除,同时该每个数相加后也能被整除.下面说下为什么这个多位数(m位 ...
- LQ0052 冰雹数【枚举+角谷猜想】
题目来源:蓝桥杯2016初赛 C++ C组H题 题目描述 任意给定一个正整数N,如果是偶数,执行: N / 2:如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过 ...
- python角谷猜想详细步骤_用python3.7编写考拉兹猜想 -
你听说过考拉兹猜想吗?就是随便选一个大于1自然数,如果是奇数就乘3加1,如果是偶数就除2,如此循环,最后结果一定是1.考拉兹猜想又称为奇偶归一猜想.3n+1猜想.冰雹猜想.角谷猜想.哈塞猜想.乌拉姆猜 ...
- Python验证和可视化冰雹猜想、角谷猜想、考拉兹猜想
推荐教材:<中学生可以这样学Python(微课版)>,董付国.应根球,清华大学出版社,ISBN:9787302554639 京东购买链接: =================== 问题描述 ...
- c语言问题 角谷猜想,hdu 1279 验证角谷猜想(简单的模拟)
Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何 ...
- 奇偶归一猜想(多组数据)——又称为3n+1猜想、冰雹猜想、角谷猜想
输入两个正整数a和b(1<a<b<1000),输出二者之间所有数的奇偶归一猜想的验证过程. [科普] 奇偶归一猜想,又称为3n+1猜想.冰雹猜想.角谷猜想等.其内容为"对于 ...
- 用Python实现冰雹猜想(3n+1猜想,角谷猜想,叙古拉猜想)的黑洞演示
目录 一.冰雹猜想的来由 二.实现方法 1.定义根据规则生成新数的函数 2.定义生成列表的函数 3.定义主函数 三.完整代码 四.部分代码分析 五.输出结果 1.输入4 2.强悍的27 总结: 前面完 ...
- 角谷猜想(Collatz conjecture)--用 python 语言实现
老师布置的一个小作业–用python代码实现角谷猜想,下面就给大家提供一个思路,供大家参考. ''' 角谷猜想: n 是一个自然数 如果 n 是奇数,则 n = 3 * n + 1 如果 n 是偶数, ...
最新文章
- java的内部类和匿名类剖析
- 实现TcpIp简单传送
- 罗永浩回应“鲨鱼皮技术遭质疑”;消息称马蜂窝开启裁员;Dart 2.7 发布 | 极客头条...
- windows下MongoDB数据库的安装
- 智能优化算法:猫群优化算法-附代码
- prepareStatament和Statement和callableStatement的区别
- 渗透工具-masscan
- java cim客户端_高效使用 SBLIM CIM Client
- 如何通过蒲公英批量获取iPhone设备的udid
- android上的壁纸软件,那些简约、精美、极致的安卓软件(APP) 篇四:这7个APP,满足你对壁纸所有的向往...
- css钢铁侠视角,css练习制作钢铁侠胸口的小型核反应堆
- Ubuntu 终端窗口操作快捷键
- 十一月 Z 星月度速览 | 个性化推荐技术解读、Mivus demo 服务框架切换缘解、精选好书推荐、AI 收藏夹……...
- 台式电脑怎么添加计算机硬盘,如何在台式电脑增加硬盘的安装及设置方法
- 【STM32】HAL库 STM32CubeMX教程九---ADC
- [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space
- 虎年,用Python画一个小老虎,祝大家新年虎虎生威,大吉大利
- Python实现桌面壁纸设置
- Linux内核--链表结构
- UTC时间与北京时间相互转换