1. 程式人生 > >JAVA小程式-數學黑洞6174猜想

JAVA小程式-數學黑洞6174猜想

數學黑洞7174猜想:

     任給出四位數k0,用它的四個數字由大到小重新排列成一個四位數m,再減去它的反序數rev(m),得出數k1=m-rev(m),然後,繼續對k1重複上述變換,得數k2.如此進行下去,卡普耶卡發現,無論k0是多大的四位數, 只要四個數字不全相同,最多進行7次上述變換,就會出現四位數6174。

下面給出計算邏輯程式碼,請參考:

		int num1 = 5438;
		for(;;) {
			char[] c = (num1+"").toCharArray();
			Arrays.sort(c); // 數字排序
			
			int min = 0; // 最小值
			for (int i = 0; i < c.length; i++) {
				min = min * 10 + (c[i]-'0');
			}
			
			int max = 0; // 最大值
			for (int i = c.length - 1; i >= 0; i--) {
				max = max * 10 + (c[i]-'0');
			}
			
			int num2 = max - min;
			
			if(num2 == num1) break; // 此步很重要 如果本次的計算差值與上次的相同 則直接跳出迴圈
			
			System.out.println(num2);
			num1 = num2;
		}

結果如下:

5085
7992
7173
6354
3087
8352
6174

不過,本人倒時試出了別的值;

由於猜想是說四位不全相同的數值,經本人略加測試 發現如下規律的值經上述步驟計算後的結果都是0,

如 5554、5545、8999、9899 等三位相同的數字作為大數,小數字是大數-1,任意排列作為起始值,結果都是0;

不信可以試下!

至此結束;謝謝!