黑洞数程序

baojiming1 2013-02-17 08:59:21
/* 黑洞数
题目:黑洞数又称陷阱数,是类具有奇特转换特性的整数,任何一个数字不全相同的整数,经有限“重排求差”操作,总会得到某一个或一些书,这些书即为黑洞数,
"重排求差":就是把该组数字重新以从小到大,从大到小,再将最大的减去最小的方法
列子:297,重排求差一次得到693.再来一次得到594,再来得到495,继续得到495,反复都得到495.


程序分析:
1.利用Arrays中的sort():升序排序
2.就是1个数拆成一个最大,一个最小,再相减。如果==6174,那么这个数就出来了
*/
import java.util.Arrays;
class Demo17
{
public static void main(String[] args)
{
for(int in=1000;in<100000;in++)//遍历4位数
{
System.out.println(in+"验证如下");

if(in%1111==0) //4位都一样的数排除
{
System.out.println("数字全部相同");
continue;
}
else
{
int count = 0; //计算次数
int in2 = in;
do
{
in2 = he(fen(in2)); //调用he()于fen()方法
count++;
}
while (in2!=6174); //直至计算结果为6174

if(in2==6174) //满足,输出结束
{
System.out.println("计算了"+count+"次,命题为真");
}
else //不满足,输出假
{
System.out.println("命题为假");
}
}
}

System.out.println("程序结束");
}

public static int[] fen(int in)//使用Arrays集合中的对数组进行升序排序的方法sort();
{
int a[] = new int[4];
//千位数
a[0] = in/10000;

//百位数
in = in%1000;
a[1] = in/100;

//十位数
in = in%100;
a[2] = in/10;

//个位数
in = in%10;
a[3] = in;

Arrays.sort(a); //对指定数组进行升序排列
return a;
}

public static int he(int[] a)//合并4位数,重新组成最大和最小的数
{
Arrays.sort(a); //升序排列

int max = a[0]+a[1]*10+a[2]*100+a[3]*1000;//最大
int min = a[3]+a[2]*10+a[1]*100+a[0]*1000;//最小

System.out.println(max+"-"+min+"="+(max-min));

return max-min;
}
}
//程序运行可以,就是求不出,他的值
...全文
425 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tc@zen123 2013-02-17
  • 打赏
  • 举报
回复
辛苦了,学习学习!
baojiming1 2013-02-17
  • 打赏
  • 举报
回复
谢谢。没注意。越了
abc41106 2013-02-17
  • 打赏
  • 举报
回复
import java.util.Arrays; public class Demo17 { public static void main(String[] args) { for (int in = 1000; in < 10000; in++)// 遍历4位数,这里应该是in < 10000,你写成100000了 { System.out.println(in + "验证如下"); if (in % 1111 == 0) // 4位都一样的数排除 { System.out.println("数字全部相同"); continue; } else { int count = 0; // 计算次数 int in2 = in; do { in2 = he(fen(in2)); // 调用he()于fen()方法 count++; } while (in2 != 6174); // 直至计算结果为6174 if (in2 == 6174) // 满足,输出结束 { System.out.println("计算了" + count + "次,命题为真"); } else // 不满足,输出假 { System.out.println("命题为假"); } } } System.out.println("程序结束"); } public static int[] fen(int in)// 使用Arrays集合中的对数组进行升序排序的方法sort(); { int a[] = new int[4]; // 千位数 a[0] = in / 1000;// 这里应该是1000,你写成10000了 // 百位数 in = in % 1000; a[1] = in / 100; // 十位数 in = in % 100; a[2] = in / 10; // 个位数 in = in % 10; a[3] = in; Arrays.sort(a); // 对指定数组进行升序排列 return a; } public static int he(int[] a)// 合并4位数,重新组成最大和最小的数 { Arrays.sort(a); // 升序排列 int max = a[0] + a[1] * 10 + a[2] * 100 + a[3] * 1000;// 最大 int min = a[3] + a[2] * 10 + a[1] * 100 + a[0] * 1000;// 最小 System.out.println(max + "-" + min + "=" + (max - min)); return max - min; } }

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧