数学黑洞(二)任何数都逃不出的西西弗斯黑洞

如果我写的博文《数学黑洞(一)令人拍案叫绝的卡布列克常数》惊艳到您了,那西西弗斯黑洞也同样不会让您感到失望。西西弗斯黑洞又叫123黑洞,很明显,这个要出现的不可思议的现象要与再简单不过的数字123扯上了,与6174黑洞还要限制数字位数相比,123黑洞可适用于适合正整数!那么下面我们就看一下关于这个黑洞的描述:


设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数,

  例如:1234567890,
  偶:数出该数数字中的偶数个数,在本例中为2,4,6,8,0,总共有 5 个。
  奇:数出该数数字中的奇数个数,在本例中为1,3,5,7,9,总共有 5 个。
  总:数出该数数字的总个数,本例中为 10 个。
  新数:将答案按 “偶-奇-总” 的位序,排出得到新数为:5510。
  重复:将新数5510按以上算法重复运算,可得到新数:134。
  重复:将新数134按以上算法重复运算,可得到新数:123。
  结论:对数1234567890,按上述算法,最后必得出123的结果,换言之,任何数的最终结果都无法逃逸123黑洞。



下面我们还是用程序验证这一结论。

代码清单:

import java.util.Random;


public class HeiDong123 {

	static final int N = 100;
	static int count = 0;
	public static void main(String[] args) {
		
		Random r = new Random();
		/*随机产生N个随机数进行测试*/
		for(int i = 0; i < N; i++)
			go(r.nextInt(r.nextInt(1000000)+1));	
		/*判断N个随机数结果是否产生N个123*/
		System.out.println(count == N);
		
	}

	private static void go(int a) {
		
		int oushu = 0;
		int jishu = 0;
		int sum = 0;
		while(a > 0){
			if((a & 1) == 0)
				oushu++;
			else
				jishu++;
			a /= 10;
		}
		sum = oushu + jishu;
		int temp = sum;
		int n = 1;
		while(temp > 0){
			n *= 10;
			temp /= 10;
		}
		int m = n;
		temp = jishu;
		if(temp == 0)
			jishu = 10;
			
		while(temp > 0){
			m *= 10;
			temp /= 10;
		}
		sum = oushu * m + jishu * n + sum;
		if(sum == 123){
			count++;
			return;
		}
			
		go(sum);
	}

}


此问题已在2010年由我国的唯美主义和自然主义男士秋屏证明。

以下内容转载至秋屏的新浪博客上的证明原文:

http://blog.sina.com.cn/s/blog_4d2e0dd80100ih0x.html

“西西弗斯串(数学黑洞)”现象与其证明

                                                             □     秋 屏

 由若干个阿拉伯数字从左至右排列而成的一串数字符号,叫做数字串。如:“0”,“12”,“235”,“333”,“1403765”,“00587465132098”等等,就分别是一个数字串。显然任意一数字串中均含有若干个由一个阿拉伯数字构成的奇数或偶数。

“数学黑洞”现象:取任意一数字串,(1)先数一下其中所含由一个阿拉伯数字构成的偶数个数,比如个数是“m”,就记作“m”。(2)再数一下其中所含由一个阿拉伯数字构成的奇数个数,比如个数是“n”,就在“m”后面记作“n”——得出“mn”。(3)最后算一下其中所含阿拉伯数字的总个数,即把“m”加 “n”的和算出,比如和是“l”,就在“mn”后面记作“l”——得出“mnl”。经过以上三个步骤的程序操作,就将原数字串转变成了“mnl”这个数字串。此时会发现:也许按本程序操作一次,所转变成的数字串就是数字串“123”;否则,将转变成的数字串继续按本程序操作,这样反复操作下去最终总可将原数字串转变成数字串“123”。而且一旦将原数字串转变成数字串“123”后,无论再对“123”按本程序操作多少次,所转变成的数字串总还是“123”,而不会是其他形式的数字串。这就是说对任意一数字串按本程序反复操作下去,最终所转变的数字串总是“123”。因此对于这个程序以及“数字宇宙(即无限个数字串)”来说,数字串“123”就是一个永远无法逃逸的“数学黑洞”。数字串“123”也称作西西弗斯串。西西弗斯的故事出自希腊神话,天神罚科林斯国王西西弗斯将一块巨石推到一座陡峭的山顶上,但无论他怎样努力,这块巨石总是在到达山顶时却又不可避免地滚下来,于是他只得重新再推,永无休止。之所以把数字串“123”称作西西弗斯串,意思是说对于任意一数字串按本程序反复操作下去,所得的结果都是“123”,而且一旦转变成“123”后,无论再按本程序操作多少次,每次所转变的结果都会永无休止地重复着“123”。

例如:对数字串“235”按本程序反复操作。先数下其中所含由一个阿拉伯数字构成的偶数个数,个数为“1”,就记作“1”。再数下其中所含由一个阿拉伯数字构成的奇数个数,个数为“2”,就在“1”后面记作“2”——得出“12”。最后算一下其中所含阿拉伯数字的总个数,即把“1”和“2”的和算出,和是“3”,就在“12”后面记作“3”——得出“123”。这样原数字串就转变成了“123”。而后对“123”继续按本程序操作任意次,结果还是转变成“123”。

例如:对数字串“0”按本程序反复操作。先数下其中所含由一个阿拉伯数字构成的偶数个数,个数为“1”,就记作“1”。再数下其中所含由一个阿拉伯数字构成的奇数个数,个数为“0”,就在“1”后面记作“0”——得出“10”。最后算一下其中所含阿拉伯数字的总个数,即把“1”和“0”的和算出,和是“1”,就在“10”后面记作“1”——得出“101”。这样就把原数字串转变成了“101”。继续对“101”按本程序操作,先数下其中所含由一个阿拉伯数字构成的偶数个数,个数为“1”,就记作“1”。再数下其中所含由一个阿拉伯数字构成的奇数个数,个数为“2”,就在“1”后面记作“2”——得出“12”。最后算一下其中所含阿拉伯数字的总个数,即把“1”和“2”的和算出,和是“3”,就在“12”后面记作“3”——得出“123”。这样“101”就转变成了“123”。而后对“123”继续按本程序操作任意次,结果还是转变成“123”。

例如:对数字串“333”按本程序反复操作。先数下其中所含由一个阿拉伯数字构成的偶数个数,个数为“0”,就记作“0”。再数下其中所含由一个阿拉伯数字构成的奇数个数,个数为“3”,就在“0”后面记作“3”——得出“03”。最后算一下其中所含阿拉伯数字的总个数,即把“0”和“3”的和算出,和是“3”,就在“03”后面记作“3”——得出“033”。这样就把原数字串转变成了“033”。继续对“033”按本程序操作,就可将其转变成“123”。而后对“123”继续按本程序操作任意次,结果还是转变成“123”。

例如:对数字串“005874626820987688899445321068215”按本程序反复操作。先数下其中所含由一个阿拉伯数字构成的偶数个数,个数为“22”,就记作“22”。再数下其中所含由一个阿拉伯数字构成的奇数个数,个数为“11”,就在“22”后面记作“11”——得出“2211”。最后算一下其中所含阿拉伯数字的总个数,即把“22”和“11”的和算出,和是“33”,就在“2211”后面记作“33”——得出“221133”。这样就把原数字串转变成了“221133”。继续对“221133”按本程序操作,就可将其转变成“246”。继续对“246”按本程序操作,就可将其转变成“303”。继续对“303”按本程序操作,就可将其转变成“123”。而后对“123”继续按本程序操作任意次,结果还是转变成“123”。

如果将本程序的三个步骤作出相应改变,比如先数下数字串中所含由一个阿拉伯数字构成的奇数个数,记下。再数下数字串中所含由一个阿拉伯数字构成的偶数个数,记下。最后算一下数字串中所含阿拉伯数字的总个数,记下。这样就能形成“数学黑洞”——“213”;比如先数下数字串中所含阿拉伯数字的总个数,记下。再数下数字串中所含由一个阿拉伯数字构成的偶数个数,记下。最后算一下数字串中所含由一个阿拉伯数字构成的奇数个数,记下。这样就能形成“数学黑洞”——“312”;比如先数下数字串中所含阿拉伯数字的总个数,记下。再数下数字串中所含由一个阿拉伯数字构成的奇数个数,记下。最后算一下数字串中所含由一个阿拉伯数字构成的偶数个数,记下。这样就能形成“数学黑洞”——“321”;比如先数下数字串中所含由一个阿拉伯数字构成的偶数个数,记下。再数下数字串中所含阿拉伯数字的总个数,记下。最后算一下数字串中所含由一个阿拉伯数字构成的奇数个数,记下。这样就能形成“数学黑洞”——“132”;比如先数下数字串中所含由一个阿拉伯数字构成的奇数个数,记下。再数下数字串中所含阿拉伯数字的总个数,记下。最后算一下数字串中所含由一个阿拉伯数字构成的偶数个数,记下。这样就能形成“数学黑洞”——“231”。

为什么会形成这样的“数学黑洞”现象呢?下面就作出数学证明。

“西西弗斯串(数学黑洞)”——“123”的证明过程

在证明之前,首先探讨下自然数和阿拉伯数字个数之间的关系。

规律一:一个大于“0”且含有“k(k为大于‘0’的自然数)”个阿拉伯数字的自然数N,其取值范围为:10k-1≦N≦10k-1。(此规律证明过程略)

如:1≦N≦9;10≦N≦99;100≦N≦999;1000≦N≦9999;10000≦N≦99999……

规律二:一个含有“k(k为大于‘0’的自然数)”个阿拉伯数字的自然数可表示为两个自然数之和,那么这后两个自然数中所含阿拉伯数字的个数,均不能超过“k”,却可能同时为“k”。因此,(一)当k=1时,这三个具有加法运算关系的自然数中所含阿拉伯数字的个数之和,只能有唯一的值,其值是:3k。(二)当k﹥1时,这三个具有加法运算关系的自然数中所含阿拉伯数字的个数之和,会有若干个值,而每个值均大于“3”,并且可能存在的最大值是:3k。(此规律证明过程略)

如:“0,1,2,9……”这些自然数中含有“1”个阿拉伯数字,并且它们均可表示为两个自然数之和,而在“0=0+0;1=1+0;2=1+1,2=2+0;9=4+5,9=9+0……”中,三个具有加法运算关系的自然数中所含阿拉伯数字的个数之和,只能有唯一的值,其值是:3k=3×1=3。

如:“1000,3333,9856,9999……”这些自然数中含有“4”个阿拉伯数字,并且它们均可表示为两个自然数之和,而在“1000=998+2,1000=990+10,1000=600+400,1000=1000+0;3333=3330+3,3333=3300+33,3333=2833+500,3333=3333+0,3333=1000+2333;9856=9855+1,9856=9800+56,9856=9000+856,9856=9856+0,9856=8132+1724;9999=9997+2,9999=9900+99,9999=9000+999,9999=9999+0,9999=1000+8999……”中,三个具有加法运算关系的自然数中所含阿拉伯数字的个数之和,有3或4个值,而每个值均大于“3”,并且可能存在的最大值是:3k=3×4=12。

下面便是“西西弗斯串(数学黑洞)”——“123”的证明步骤。

1.对所含阿拉伯数字的总个数不大于“3”的数字串,按本程序操作一次,则可将其转变成数字串“abc(a,b,c分别为自然数;a系前一个数字串中所含由一个阿拉伯数字构成的偶数个数;b系前一个数字串中所含由一个阿拉伯数字构成的奇数个数;c系前一个数字串中所含阿拉伯数字的总个数,且c=a+b≦3)”的形式。因其中c≦3,故可知c中所含阿拉伯数字的个数k=1。根据规律二中(一)的描述可知,c,a,b中所含阿拉伯数字的个数之和是:3k=3×1=3,即“abc” 中所含阿拉伯数字的总个数为“3”。 

2.对所含阿拉伯数字的总个数不小于“4”的数字串,按本程序操作一次,则可将其转变成数字串“abc(a,b,c分别为自然数;a系前一个数字串中所含由一个阿拉伯数字构成的偶数个数;b系前一个数字串中所含由一个阿拉伯数字构成的奇数个数;c系前一个数字串中所含阿拉伯数字的总个数,且c=a+b≧4)”的形式。因其中c≧4,故可知c中所含阿拉伯数字的个数k≧1(k系自然数)。

1)当k=1时,根据规律一的描述可知,c的取值范围为:10k-1≦c≦10k-1,即1≦c≦9。又因为此时c≧4,而4﹥1,所以c的真正取值范围是:4≦c≦9。因为c的真正最小值为“4”,故前一个数字串中所含阿拉伯数字的总个数至少为“4”。根据规律二中(一)的描述可知,c,a,b中所含阿拉伯数字的个数之和是:3k=3×1=3,即“abc” 中所含阿拉伯数字的总个数为“3”。显然“abc” 中所含阿拉伯数字的总个数,要比前一个数字串中所含的有所减少。

2)当k﹥1时,根据规律一的描述可知,c的取值范围为:10k-1≦c≦10k-1。虽然此时c≧4,而10k-1﹥4(此不等式的证明过程略),所以c的真正取值范围还是:10k-1≦c≦10k-1。因为c的真正最小值为“10k-1”,故前一个数字串中所含阿拉伯数字的总个数至少为“10k-1”。根据规律二中(二)的描述可知,c,a,b中所含阿拉伯数字的个数之和大于“3”,并且可能存在的最大值是:3k,即“abc” 中所含阿拉伯数字的总个数大于“3”,并且最多不会超过“3k”。因为此时10k-1﹥3k(此不等式的证明过程略),所以“abc” 中所含阿拉伯数字的总个数大于“3”,并且要比前一个数字串中所含的有所减少。

因为1)中“abc” 中所含阿拉伯数字的总个数等于“3”,而2)中“abc” 中所含阿拉伯数字的总个数大于“3”,所以此时合并而论,“abc” 中所含阿拉伯数字的总个数即不小于“3”。再由1)和2)的结论可知,只要对所含阿拉伯数字的总个数不小于“4”的数字串,按本程序操作一次,所转变成的数字串中所含阿拉伯数字的总个数不小于“3”,并且和前一个数字串中所含的相比就会减少。若所转变成的数字串中所含阿拉伯数字的总个数还不小于“4”,继续对此数字串按本程序操作,同理,再次转变成的数字串中所含阿拉伯数字的总个数不小于“3”,并且和前一个数字串中所含的相比还会减少……如此减少下去,这种减少趋势直到减少到所含阿拉伯数字的总个数是“3”时为止。

3.通过对1.和2.的结论的分析,不难想象还会进一步推导出这样的综合结论——任意一数字串“Q”,无论其中所含阿拉伯数字的总个数是多少,若按本程序操作若干次后,总可将其转变成所含阿拉伯数字的总个数为“3”的数字串“mnl(m,n,l分别为自然数;m系前一个数字串中所含由一个阿拉伯数字构成的偶数个数;n系前一个数字串中所含由一个阿拉伯数字构成的奇数个数;l系前一个数字串中所含阿拉伯数字的总个数,且l=m+n)”。

   继续对“mnl” 按本程序操作一次后,则可将其转变成数字串“pqr(p,q,r分别为自然数;p系前一个数字串中所含由一个阿拉伯数字构成的偶数个数;q系前一个数字串中所含由一个阿拉伯数字构成的奇数个数;r系前一个数字串中所含阿拉伯数字的总个数,且r=p+q)”。因为“mnl” 中所含阿拉伯数字的总个数是“3”,故“pqr”中的“r” 就等于“3”,由此可知“pqr”即是“pq3”这个数字串,且其中所含阿拉伯数字的总个数是“3”,同时3=p+q。同理,继续对“pq3” 按本程序操作一次后,则可将其转变成数字串“xy3(x,y分别为自然数;x系前一个数字串中所含由一个阿拉伯数字构成的偶数个数;y系前一个数字串中所含由一个阿拉伯数字构成的奇数个数;3系前一个数字串中所含阿拉伯数字的总个数,且3=x+y)”。在“pq3”中,因为3=p+q,且“3”系奇数,故可知“p”和“q”这两个自然数一个必是奇数,一个必是偶数,即“pq3”中所含阿拉伯数字的总个数是“3”,由一个阿拉伯数字构成的偶数个数是“1”,由一个阿拉伯数字构成的奇数个数是“2”。因而“xy3”中的“x”就等于“1”,“y”就等于“2”,由此可知“xy3”即是数字串“123”。而“123”就其中所含阿拉伯数字的总个数“3”以及其中三个数字之间的关系“3=1+2”而言,恰好属于“pq3”这种组成形式,同理,所以对“123”不论再按本程序操作多少次,其结果都还会是“123”,并且不可能再转变成其他形式的数字串。也就说数字串“123”是对任意一数字串“Q”按本程序反复操作下去的最终结果。至此,“西西弗斯串(数学黑洞)”——“123”现象得证。  

至于三个步骤相应改变后的程序所导致的“数学黑洞”——“213”、“312”、“321”、“132”和“231”现象的证明方法与本证明相似,这里就不再赘述。



==================================================================================================

  作者:nash_  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/nash_/article/details/8249661

===================================================================================================

猜你喜欢

转载自blog.csdn.net/nash_/article/details/8249661