十进制位数剥离+水仙花数

/**
 * 位数剥离算法
 * @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 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值