已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
import java.util.Random;
public class test {
public int count=0;
public void order(int[] a)
{
int temp;
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-i-1;j++)
{
if (a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
public int getmax(int[] a)
{
return a[0]+a[1]*10+a[2]*100+a[3]*1000;
}
public int getmin(int[] a)
{
return a[0]*1000+a[1]*100+a[2]*10+a[3];
}
public int[] getarr(int m)
{
int a[]=new int[4];
for(int i=0;i<4;i++)
{
a[i]=m %10;
m=m/10;
}
return a;
}
public void f(int n)
{
int a[]=new int[4];
a=getarr(n);
order(a);
System.out.print("本次的4位数的序列为:");
for(int i=0;i<4;i++){
System.out.print(a[i]);
}
System.out.println();
int max=getmax(a);
int min=getmin(a);
System.out.println(" 最大数为"+max+" 最小数为"+min);
int x=max-min;
count++;
System.out.println("第"+count+"次相减的结果为"+x);
if (x==6174 || count==7)
{
return;
}
else{
f(x);
}
}
public static void main(String args []){
test t=new test();
int n = new Random().nextInt(9999);
t.f(n);
}
}
1121

被折叠的 条评论
为什么被折叠?



