趣味整数-黑洞数
2016-04-20 12:51
267 查看
问题描述:
黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相等的整数,经有限“重排求差”操作,总会得到某一个或一些数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。
举个例子,3位数的黑洞数是495.
简易推倒过程:随便找个数,如297,3个位上的数从小到大和 各排一次,为279和972,相减,得693.按照上面的做法再做一次,得到594,再做一次,得到495,之后反复都得到495.
验证4位数的黑洞数为6174.
黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相等的整数,经有限“重排求差”操作,总会得到某一个或一些数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。
举个例子,3位数的黑洞数是495.
简易推倒过程:随便找个数,如297,3个位上的数从小到大和 各排一次,为279和972,相减,得693.按照上面的做法再做一次,得到594,再做一次,得到495,之后反复都得到495.
验证4位数的黑洞数为6174.
import java.util.Arrays; public class Main { public static int[] sort1(int num){ //求组合 int[]a = new int[4]; a[0] = num/1000; //取千分位 num = num%1000; //去千分位 a[1] = num/100; //取百分位 num = num%100; //去百分位 a[2] = num/10; //取十分位 a[3] = num%10; //取个位 Arrays.sort(a); return a; } public static int result(int[]a){ //求最大最小组合即其差值 Arrays.sort(a); int sum1 = (a[3]*1000) + (a[2]*100) + (a[1]*10) + a[0]; int sum2 = (a[0]*1000) + (a[1]*100) + (a[2]*10) + a[3]; return sum1-sum2; } public static void main(String[]Args){ //在a到b范围的相亲数 int times3 = 0; int times2 = 0; for(int i=1000 ; i<=9999 ; i++){ if(i%1111==0){ times3++; continue; }else{ int result1 =i; int times=0; do{ result1 = result(sort1(result1));//sort1()中必须是result1 times++; }while(result1!=6174); if(result1==6174){ times2++; System.out.println("计算了"+times+"次,命题为真"); }else{ System.out.println("命题为假"); } } } System.out.println(times2);//黑洞数是6174的数字的个数 System.out.println(times3);//输出各位相同的数字的个数 System.out.println(times2+times3); //如果times2+times3的和是1000到9999的个数 则证明四位数的黑洞数是6174 } }
相关文章推荐
- 108. Convert Sorted Array to Binary Search Tree
- 持续集成(二)环境搭建篇—内网邮件server搭建
- Oracle 删除重复的记录,只保留一条
- 势篇
- 用java实现随机输出1个[e, f)的数字
- 用 git 下载 uboot 源码
- 36. Valid Sudoku
- 正则验证匹配中文姓名全部源字符串
- 使用VMware 安装Linux CentOS7
- 20160420-序列比对前的准备工作
- Timus 1291 Gear-wheels
- 对下一步方向的迷失
- Zabbix Agent 源码编译安装
- DrawerLayout的侧拉范围方法,
- zabbix弱口令批量检测
- jQuery基础
- LVS DR模式问题
- API json多层数据实体类封装(利用泛型技术)
- FFmpeg:'UINT64_C' was not declared in ths scope
- 阿里云oss存储(js端签名直传)