/**
* 位数剥离算法
* @param 传入任意一个数
* @return 各个位上的数的一个数组
*/
public static int[] shui(int a){
if(a<0) return null;
String str = String.valueOf(a);
int len = str.length();
int[] array = new int[len];
array[0] = (int) (a/(Math.pow(10, len-1)));
if(a > 1)array[len-1] = (int) ( a % 10 );
for(int i = 1;i<len-1;i++){
array[i] = (int)( (a%Math.pow(10, len-i))/Math.pow(10, len-i-1) );
}
return array;
}
/**
* 打印水仙花数 "水仙花数 "是指一个三位数,其各位数字立方 和等于该数本身。
* 例如:153是一个"水仙花数 ", 因为153=1的三次方+5的三次方+3的三次方。
*/
@Test //此注解需要引入junit包
public void Test2(){
int num = 1000;//查找包括num以内的水仙花数
for(int i = 0;i < num;i++){
int sum = 0;//各个位数的立方和
int len = String.valueOf(i).length(); //该数的位数
for(int j = 0;j < len;j++){
sum += (int) (Math.pow(shui(i)[j] , 3));
}
if(sum == i){
System.out.println(i);
}
}
}
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙花数共有3个:24678050,24678051,88593477
十进制位数剥离+水仙花数
猜你喜欢
转载自blog.csdn.net/huiban123/article/details/80383164
今日推荐
周排行