Java:找水仙花数。。计算超出2^63-1的数的方案
来源:互联网 发布:企业电话数据 编辑:程序博客网 时间:2024/05/12 08:17
水仙花数是指一个 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位数的水仙花数有:1533703714074位数的水仙花数有:1634820894745位数的水仙花数有:5474892727930846位数的水仙花数有:5488347位数的水仙花数有:17417254210818980081799263158位数的水仙花数有:2467805024678051885934779位数的水仙花数有:146511208472335975534494836912985153
0 0
- Java:找水仙花数。。计算超出2^63-1的数的方案
- 水仙花数的计算
- 找100-999之间的“水仙花数”。
- 计算1到1000的所有水仙花数的和
- python练习2 计算100-999之间的水仙花数
- 水仙花数:n位数的水仙花数
- 水仙花数的问题
- 水仙花数的输出
- 水仙花数的求法
- 水仙花数的求取
- 五位数的水仙花数
- 求水仙花数的
- 水仙花数的输出
- “水仙花”数的问题
- python的水仙花数
- 水仙花数的PE!!!
- 水仙花数的找出
- 所有的水仙花数
- 在linux上使用git+github传文件到云服务器
- Android状态栏学习博客---供参考
- (十九)组合模式详解
- js ==与===区别(两个等号与三个等号)
- 曾国藩:凡读书,不必苦求强记
- Java:找水仙花数。。计算超出2^63-1的数的方案
- Eclipse 的Properties Editor插件
- "Spring"中设置编码格式的方法
- ios开发 单例模式
- struct和class的区别
- Android Studio 代码混淆
- ftp搭建与命令
- Redis学习笔记(八)redis之lua脚本学习
- 程序调用宏(Macro)执行相同内容单元格合并