数学黑洞(一)令人拍案叫绝的卡布列克常数

卡布列克是一位数学家,他在研究数字时发现:任意一个不是有完全相同数字的组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数各一个最小的数,然后用最大数减去最小数,差不够四位数时补零,类推下去,最后将变成一个固定的数: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 \to83952 \to74943 \to62964 \to71973
82962 \to75933 \to63954 \to61974 \to82962
53955 \to59994 \to53955

6位数的状况:有2个黑洞631764、549945,还有1个7个成员的循环

420876 \to851742 \to750843 \to840852 \to860832 \to862632 \to642654 \to420876

7位数的状况:没有黑洞,只有1个8成员的循环

7509843 \to9529641 \to8719722 \to8649432 \to7519743 \to8429652 \to7619733 \to8439522 \to7509843

8位数的状况:有2个黑洞63317664、97508421

9位数的状况:有2个黑洞554999445、864197532

10位数的状况:有3个黑洞6333176664、9753086421、9975084201


  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值