【java/math】神奇数字6174
下面是一段有趣的程序。
代码:
package com.hy.lab.endlessloop; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * 神奇数字6174 * 如果随机找一个四位数 * 将各位按降序排列得到最大的四位数 * 将各位按升序排列得到最小的四位数 * 取最大数与最小数的差值 * 如果其不等于6174,就以此值代替随机数重复以上三步运算 * 你会发现有限次数内6174就会出现 * 这个结论对任何四位数都成立 */ public class Test { public static void main(String[] args) throws IOException { String expr; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); for(;;) { System.out.print("按e退出,其他键继续:"); expr=br.readLine(); if(expr.equalsIgnoreCase("e")) { break; } int seed=rnd(1000,9999); System.out.println("我们随机地选择了"+seed+"这个四位数"); int idx=0; for(;;){ idx++; seed=getMaxMinusMin(seed); if(seed==6174){ System.out.println("循环了"+idx+"次得到神奇数字6174。\n"); idx=0; break; } } } } /** * 将四位数seed分别取其千百十个位,重新组合成最大的四位数和最小的四位数,取其差值 * @param seed 输入的四位数 * @return 最大值-最小值 */ private static int getMaxMinusMin(int seed){ int a=seed/1000; int b=seed/100-10*a; int c=seed/10-100*a-10*b; int d=seed % 10; int[] arr={a,b,c,d}; Arrays.sort(arr); int max=1000*arr[3]+100*arr[2]+10*arr[1]+arr[0]; System.out.println("其各位数字组成的最大数是:"+max); int min=1000*arr[0]+100*arr[1]+10*arr[2]+arr[3]; System.out.println("其各位数字组成的最小数是:"+min); int diff=max-min; System.out.println("它们的差是:"+diff); return max-min; } /** * get a random integer between min and max * @param min * @param max * @return */ private static int rnd(int min,int max) { return (int)(min+Math.random()*(max-min+1)); } }
输出:
按e退出,其他键继续:7 我们随机地选择了7740这个四位数 其各位数字组成的最大数是:7740 其各位数字组成的最小数是:477 它们的差是:7263 其各位数字组成的最大数是:7632 其各位数字组成的最小数是:2367 它们的差是:5265 其各位数字组成的最大数是:6552 其各位数字组成的最小数是:2556 它们的差是:3996 其各位数字组成的最大数是:9963 其各位数字组成的最小数是:3699 它们的差是:6264 其各位数字组成的最大数是:6642 其各位数字组成的最小数是:2466 它们的差是:4176 其各位数字组成的最大数是:7641 其各位数字组成的最小数是:1467 它们的差是:6174 循环了6次得到神奇数字6174。 按e退出,其他键继续:l 我们随机地选择了3414这个四位数 其各位数字组成的最大数是:4431 其各位数字组成的最小数是:1344 它们的差是:3087 其各位数字组成的最大数是:8730 其各位数字组成的最小数是:378 它们的差是:8352 其各位数字组成的最大数是:8532 其各位数字组成的最小数是:2358 它们的差是:6174 循环了3次得到神奇数字6174。 按e退出,其他键继续:; 我们随机地选择了5002这个四位数 其各位数字组成的最大数是:5200 其各位数字组成的最小数是:25 它们的差是:5175 其各位数字组成的最大数是:7551 其各位数字组成的最小数是:1557 它们的差是:5994 其各位数字组成的最大数是:9954 其各位数字组成的最小数是:4599 它们的差是:5355 其各位数字组成的最大数是:5553 其各位数字组成的最小数是:3555 它们的差是:1998 其各位数字组成的最大数是:9981 其各位数字组成的最小数是:1899 它们的差是:8082 其各位数字组成的最大数是:8820 其各位数字组成的最小数是:288 它们的差是:8532 其各位数字组成的最大数是:8532 其各位数字组成的最小数是:2358 它们的差是:6174 循环了7次得到神奇数字6174。 按e退出,其他键继续:。 我们随机地选择了1276这个四位数 其各位数字组成的最大数是:7621 其各位数字组成的最小数是:1267 它们的差是:6354 其各位数字组成的最大数是:6543 其各位数字组成的最小数是:3456 它们的差是:3087 其各位数字组成的最大数是:8730 其各位数字组成的最小数是:378 它们的差是:8352 其各位数字组成的最大数是:8532 其各位数字组成的最小数是:2358 它们的差是:6174 循环了4次得到神奇数字6174。 按e退出,其他键继续:‘ 我们随机地选择了6467这个四位数 其各位数字组成的最大数是:7664 其各位数字组成的最小数是:4667 它们的差是:2997 其各位数字组成的最大数是:9972 其各位数字组成的最小数是:2799 它们的差是:7173 其各位数字组成的最大数是:7731 其各位数字组成的最小数是:1377 它们的差是:6354 其各位数字组成的最大数是:6543 其各位数字组成的最小数是:3456 它们的差是:3087 其各位数字组成的最大数是:8730 其各位数字组成的最小数是:378 它们的差是:8352 其各位数字组成的最大数是:8532 其各位数字组成的最小数是:2358 它们的差是:6174 循环了6次得到神奇数字6174。 按e退出,其他键继续: 我们随机地选择了6828这个四位数 其各位数字组成的最大数是:8862 其各位数字组成的最小数是:2688 它们的差是:6174 循环了1次得到神奇数字6174。 按e退出,其他键继续:D 我们随机地选择了3005这个四位数 其各位数字组成的最大数是:5300 其各位数字组成的最小数是:35 它们的差是:5265 其各位数字组成的最大数是:6552 其各位数字组成的最小数是:2556 它们的差是:3996 其各位数字组成的最大数是:9963 其各位数字组成的最小数是:3699 它们的差是:6264 其各位数字组成的最大数是:6642 其各位数字组成的最小数是:2466 它们的差是:4176 其各位数字组成的最大数是:7641 其各位数字组成的最小数是:1467 它们的差是:6174 循环了5次得到神奇数字6174。 按e退出,其他键继续:
参考书目:《数学奇观 让数学之美带给你灵感和启发》P38 (美)阿尔弗雷德.S.波萨门蒂 著 上海科学教育出版社出版
END
分类:
Java与数学
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-12-15 【MYSQL】如何解决 java.sql.SQLException:null,message from Server:"Host 'xxx' is not allowed to connect to this MySQL Server"
2021-12-15 【MySQL】如何解决 javax.net.SSLException Message:Closeing inbound before receiving peer's close_notify
2021-12-15 【MySQL】让本机数据库能从别的机器访问的必要设置 附 Java连接MySQL8.011版的经典JDBC程序
2021-12-15 【MySQL】The server time zone value 'xxxxxx' is unrecognized or represents more than one time zone 解决方案
2021-12-15 【MySql】8.0.11版下载安装地址