本帖最后由 Novice.Jin 于 2015-1-25 08:04 编辑
类 NarcissusNumber
public class NarcissusNumberextends java.lang.ObjectNarcissusNumber 水仙花数是指一个 n 位数 ( n≥3 ) 它的每个位上的数字的 n 次幂之和等于它本身。 (例如:1^3 + 5^3+ 3^3 = 153)
版本:V1.1作者:Novice
- 方法概要All Methods Static MethodsConcrete Methods
限定符和类型 | 方法和说明 | static boolean | judgeNum(long num) judgeNum 用于判断一个数是否是水仙花数
| static java.lang.String | judgeSpace(long numStart, long numOver) judgeSpace 判断两个数之间的水仙花数
|
- 从类继承的方法 java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
- 构造器详细资料
- NarcissusNumberpublic NarcissusNumber()
- 方法详细资料
- judgeNumpublic static boolean judgeNum(long num)judgeNum 用于判断一个数是否是水仙花数
参数:num - 需要判断的数,需要大于100 返回:是水仙花数则返回true,否则返回false,小于100返回false
- judgeSpacepublic static java.lang.String judgeSpace(long numStart, long numOver)judgeSpace 判断两个数之间的水仙花数
参数: numStart - 开始的数值 numOver - 结束的数 值返回:返回一个次方有水仙花数的字符串,每个水仙花数用"\n"分隔
- <p>/**
- * NarcissusNumber
- * 水仙花数是指一个 n 位数 ( n≥3 )
- * 它的每个位上的数字的 n 次幂之和等于它本身。
- * (例如:1^3 + 5^3+ 3^3 = 153)
- *
- * @author Novice
- * @version V1.1
- *class NarcissusNumber {
- //用于次方水仙花数
- private static long nNum;
- //用于存放水仙花数的基数
- private static int n;
- //用于取得数值的位数,小于1时n=0
- private static void countN(){
- for(int i = 0;i < 20;i++ ){
- int x = 1;
- for(int j = 0;j < i;j++)
- x *= 10;
- if(nNum < x){
- n = i;
- break;
- }
- }
- }
- //取得x的n(基数)次方
- private static int countN(int x){
- int y = x;
- for(int i = 1;i < n;i++)
- y *= x;
- return y;
- }
- //取得各个位上的数
- private static int[] countSplit(){
- countN();
- int[] split = new int[n];
- for(int i = 0;i < n;i++){
- int x = 1;
- for(int j = 0;j < i;j++)
- x *= 10;
- split[i] = (int)nNum/x%10;
- }
- return split;
- }
- //取得各个位n(基数)次冥相加的结果
- private static long countAdd(){
- long add = 0;
- int[] split = countSplit();
- for(int i = 0;i < n;i++){
- add += countN(split[i]);
- }
- return add;
- }
- /**
- * judgeNum 用于判断一个数是否是水仙花数
- * @param num 需要判断的数,需要大于100
- * @return 是水仙花数则返回true,否则返回false,小于100返回false
- */
- public static boolean judgeNum(long num){
- nNum = num;
- if((num > 100)&&(num == countAdd()))
- return true;
- return false;
-
- }
- /**
- * judgeSpace 判断两个数之间的水仙花数
- * @param numStart 开始的数值
- * @param numOver 结束的数值
- * @return 返回一个次方有水仙花数的字符串,每个水仙花数用"\n"分隔
- */
- public static String judgeSpace(long numStart,long numOver){
- String str = "";
- for(long i = numStart;i < numOver;i++){
- if(judgeNum(i))
- str += (i + "\n");
- }
- return str;
- }</p><p>public class Test {</p><p>public static void main(String[] args) {
- System.out.println(NarcissusNumber.judgeNum(24678050));
- System.out.println(NarcissusNumber.judgeSpace(0,99999));
- }</p>
复制代码
|
|