41.打印出所有的水仙花数

编程题目:

41.打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

示例代码:

package program.calculation.exercise41;

/**
* 41.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
* 分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
*/

public class NarcissusNumber {
	public static void main(String[] args) {
		
		//获取水仙花数
		getNarcissusNumber();
		
	}

	//获取水仙花数
	private static void getNarcissusNumber() {
		int count = 0; //水仙花数个数
		for (int i=100;i<=999;i++) { //三位数
			if(isNarcissusNumber(i)) {
				count++;
				System.out.println(i);
			} 
		}
		System.out.println("水仙花数共有"+count+"个!");
		
	}

	//判断是否是水仙花数
	private static boolean isNarcissusNumber(int number) {
		
		int unit = (number%10)%10; //个位数 ,注意:number%100与number%10%10不相同,如 110
		int decade = (number/10)%10; //十位数
		int hundred = number/100; //百位数
		//Math.pow(i, j):求i的j次方
		int num = (int)(Math.pow(unit, 3)+Math.pow(decade, 3)+Math.pow(hundred, 3));
		if(number == num){
		   return true;
		}
		return false;

	}
}

结果显示:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章