Java:找水仙花数。。计算超出2^63-1的数的方案
2016-12-22 16:25
309 查看
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)(百度百科)可以求到long型之内所有的整数,存在一个设想,是否能够求出任意位数的水仙花数(这种表达比较傻),换句话说就是,能不能有一种方案计算超出2^63-1的数。package com.practice;import java.util.List;/*** Created by Administrator on 2016/12/21.*/public class NarcissisticNumber {public static void main(String [] args){int bit = 1;//当前数的位数try {long tink = 100;while(true) {MyList myList = decimalDigit(tink+ "");if(bit!=myList.size()){bit = myList.size();System.out.print("\n"+bit+"位数的水仙花数有:");}if(judge(myList,tink)) System.out.print(tink+"\t");tink++;}}catch (Exception e){System.out.println("已经超出能够计算的范围!");}}/* public static List<Integer> splitNumber(int srcNumber){List<Integer> result = new ArrayList<>();*//*int power = 1;while (true){long divisor = (long)Math.pow(10,power);long remainder = srcNumber%divisor;long consult = srcNumber/divisor;if(consult==0){break;}result.add(remainder);srcNumber = srcNumber/10;power++;}*//*int x = srcNumber/100;//百威int y = (srcNumber-x*100)/10;//十位int z = srcNumber-x*100-y*10;//个位result.add(x);result.add(y);result.add(z);return result;}*/
//判断当前数是否是水仙花数
public static boolean judge(List<Integer> list,long srcNumber){ int length = list.size(); long value =0; for(int i = 0;i<length;i++){ value += Math.pow(list.get(i),length); } if(value == srcNumber) return true; return false; } //把传入的数,转为String,然后用字符数组接收,通过ascii码,转为int,用List获得所有位置上的数及位数
//MyList extends ArrayList,重写了其中的toString();跟ArrayList没什么区别
public static MyList<Integer> decimalDigit(String srcString){MyList<Integer> result = new MyList();char [] chars = srcString.toCharArray();for(int i=0;i<chars.length;i++){result.add((chars[i]-48));}return result;}}一个小时计算到十位数3位数的水仙花数有:153 370 371 4074位数的水仙花数有:1634 8208 94745位数的水仙花数有:54748 92727 930846位数的水仙花数有:5488347位数的水仙花数有:1741725 4210818 9800817 99263158位数的水仙花数有:24678050 24678051 885934779位数的水仙花数有:146511208 472335975 534494836 912985153
相关文章推荐
- [Java]练习题003: 计算100到1000之间的水仙花数
- Java计算手机九宫格锁屏图案连接9个点的方案总数
- java 浮点计算 处理方案
- 编写Java程序,计算100~999之间的全部“水仙花数”的平均值。
- java计算任意位水仙花数示例(回文数)
- java计算自幂数和水仙花数
- java计算自然数中的水仙花数的方法分享
- java--水仙花数计算两种实现方法
- java计算X的n次方问题解决方案
- [Java]练习题003: 计算100到1000之间的水仙花数
- Java关于金额计算的选择方案
- Eclipse 3.0.1插件方案(Java、c#版)
- 微软的打包方案和Sun Java打包方案比较
- 一个JAVA后台程序的设计方案
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- Java项目资源布局方案
- 计算java内存
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (转载)
- 一个计算质数的Java程序
- 计算Java日期