1:6174数学黑洞现象6174数学黑洞,即Kaprekar常数。
选择4个不完全相同的数字(四个数字完全不同,例如1111将不起作用),进行最大排列减去最小排列(例如8753-3578),连续重复此操作,最后您将得到相同的结果是:6174。
魔术是:这种“最大减少”是指:动作最多不会超过7次! 2:现象再次出现让我们看一下五组实验的结果:请输入一个不同的四位数:3758输入的四位数是:3758第一次:8753-3578 = 5175二次:7551 -第三次-1557 = 5994:第四次9954-4599 = 5355:5553-3555 = 1998第五次:9981-1899 = 8082第六次:8820 -288 = 8532第七次:8532-2358 = 6174↑↑↑在进行了7次最大减少和最小操作后,请输入其他四位数:2517输入的四位数是:第一次2517:7521-1257 = 6264第二次:6642-2466 = 4176 3次: 7641-1467 = 6174↑最大减少次数和最小次数减少3次后,请输入其他四位数:6915输入的四位数是:6915第一次:9651-1569 = 8082 2次:8820&amp ; nbsp;-288 = 8532第三次:8532-2358 = 6174↑↑↑经过3次最大减少和最小动作后,请输入其他四位数:9073输入的r位数字是:9073第一次:9730 -379 = 9351第二次:9531-1359 = 8172第三次:8721-1278 = 7443第四次:7443-3447 = 3996第五次:9963-3699 = 6264第六次:6642-2466 = 4176第七次:7641-1467 = 6174↑↑↑在进行7次最大减少和最少操作后,请输入其他四位数:5287输入四位数是:5287第一次:8752-2578 = 6174↑减少最大次数后的动作3:C语言代码的实现接下来,我们使用C语言代码进行验证,代码实现如下://代码实现#include int convert(int number [],int ans); int * sort(int number [],int len); int main(void){int number [4]& nbsp; =& nbsp; {0}; int * p& nbsp; = NULL; int n& nbsp; = 0; int ans& nbsp; = 0; int count  = 0; printf(“请输入一个不同的四位数:”); scanf(“%d”,& n); printf(“输入的四位数是:%d " & nbsp;& nbsp;& nbsp; ans& nbsp; =& nbsp; n; while(ans!= 6174)& nbsp;& nbsp; {{& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& n; nbsp; & nbsp; =& nbsp;转换(number,ans); printf(“%d时间:%d " count + 1,ans);& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; ++ count;& nbsp; & nbsp;& nbsp;} printf(“%d之后乘以最大和最小动作 " count); return 0;} int * sort(int number [],int len)//从大到小排序{int a& nbsp; = 0; for(int i = 0;  ifor(int j = i +1; jif(number [i]  return number;} int convert(int number [],int ans)//获得的数字通过每次转换{int * p& n = null; int m = 0;& nbsp;& nbsp;& nbsp; number [0]& nbsp ==& nbspans / 1000 ; //将此数字放入数组number [1]& nbsp; ans%1000/100;& nbsp;& nbsp;& nbsp;& nbsp;数字[2]& nbsp; =& nbsp; ans%100/10;& nbsp;& nbsp; number [3]& nbsp; =& nbsp; ans%10;& nbsp; & nbsp;& nbsp; p& nbsp; =& nbsp; sort(number,4);& nbsp;& nbsp;& nbsp;& nbsp; m =(* p * 1000 + *(p + 1)* 100 + *(p + 2)* 10 + *(p + 3))-& nbsp;(& nbsp; *(p + 3)* 1000 + *(p + 2)* 100 + *(p + 1)* 10 + * p); //最大数减去最小数返回m;}运行结果:【1】C语言源代码显示:通用转换函数实现原理[2] ] Modbus-RTU-crc16验证方法C语言实现[3] C语言编程建议与技巧,ALS o适合学习单片机[4]单片机的Bootloader,可以实现用户轻松升级程序[5]如何很好地学习单片机?知道方法并有计划快速推进[6]用于微控制器烧录的十六进制文件,文件格式分析免责声明:本文内容经21ic授权后发布,版权归原作者所有,该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!