数学黑洞(一)令人拍案叫绝的卡布列克常数 |
您所在的位置:网站首页 › 四位数的陷阱数字是什么 › 数学黑洞(一)令人拍案叫绝的卡布列克常数 |
卡布列克是一位数学家,他在研究数字时发现:任意一个不是有完全相同数字的组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数各一个最小的数,然后用最大数减去最小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。例如:4321-1234=3087 8730-378=8352 8532-2358=6174 7641-1467=6174。 验证卡布列克运算,任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: (1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; (2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位); (3)求两个数的差,得到一个新的四位数(高位零保留)。 重复以上过程(最多7步),最后得到的结果是6174,这个数被称为卡布列克常数。 所以6174也被叫做黑洞数,因为这种现象类似黑洞(进去后就出不来了),也叫“6174问题”,上述变换称为卡普耶卡变换,简称 K 变换。
下面我们用程序来验证这个不可思议的事实: public class HeiDong6174 { public static void main(String[] args){ helper(1050,0); } private static void helper(int num, int count) { if(num == 6174){ System.out.println("共执行了" + count + "步"); return; } String s = String.valueOf(num); char[] cs = s.toCharArray(); if(cs.length != 4){ System.out.println("请输入一个三位数或者四位数"); return; } for(int i = 0; i < cs.length; i++){ for(int j = i; j < cs.length; j++){ if(cs[i] < cs[j]){ char temp = cs[i]; cs[i] = cs[j]; cs[j] = temp; } } } char[] cs2 = new char[cs.length]; for(int i = 0; i < cs.length; i++){ cs2[i] = cs[cs.length-1-i]; } int n1 = Integer.parseInt(new String(cs)); int n2 = Integer.parseInt(new String(cs2)); int new_num = n1 - n2; System.out.println(n1 + "-" + n2 + "=" + new_num); if(new_num / 1000 < 1)//如果不足四位数,高位补0,等价于低位补0 new_num *= 10; helper(new_num,count+1); } } 测试结果:
6174是卡布列克常数的代名词,还有其他位数的情况:
三位数也有一数495,任何三位数经过这样的运算都会对应到495。其它位数就没有像三位数及四位数这样单纯的状况,会对应到不只一种结果,或是进入数字循环(即数个数循环对应) 5位数的状况:没有黑洞,有3个循环 71973![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 6位数的状况:有2个黑洞631764、549945,还有1个7个成员的循环 420876![]() ![]() ![]() ![]() ![]() ![]() ![]() 7位数的状况:没有黑洞,只有1个8成员的循环 7509843![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 8位数的状况:有2个黑洞63317664、97508421 9位数的状况:有2个黑洞554999445、864197532 10位数的状况:有3个黑洞6333176664、9753086421、9975084201 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |