数学黑洞6174
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学黑洞6174
已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
package backhole6174;
import java.util.Arrays;
import java.util.Scanner;
public class backhole {
public static void main(String[] args)
{
System.out.println("Please input the 4bit number");
Scanner input=new Scanner(System.in);
int n=input.nextInt();
if ((n>9999)||(n<1000)||(same(n)==true)) {System.out.println("input illegel");
System.exit(0);
}
int i=1;int maxn=0;int minn=0;
while (n!=6174)
{
maxn=max(n);
minn=min(n);
System.out.println(maxn+" - "+minn);
System.out.println("The "+(i++)+"step");
n=maxn-minn;
}
System.out.println("Come out "+maxn+" - "+minn+" =6174");
}
public static boolean same(int n)
{
int[] num={n/1000,n%1000/100,n%100/10,n%10};
if ((num[0]==num[1])&&(num[0]==num[2])&&(num[0]==num[3])) return true;
else return false;
}
public static int min(int n)
{
int[] num={n/1000,n%1000/100,n%100/10,n%10};
Arrays.sort(num);
return num[0]*1000+num[1]*100+num[2]*10+num[3];
}
public static int max(int n)
{
int[] num={n/1000,n%1000/100,n%100/10,n%10};
Arrays.sort(num);
return num[3]*1000+num[2]*100+num[1]*10+num[0];
}
}