题目:
本题要求编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身
代码实现如下
public class Main {
public static void main(String[] args) {
findNarcissisticNumbersInRange(100, 400);
}
public static void findNarcissisticNumbersInRange(int M, int N) {
if (M < 100 || M > N || N > 999) {
System.out.println("Invalid Value.");
return;
}
for (int i = M; i <= N; i++) {
if (isNarcissisticNumber(i)) {
System.out.println(i);
}
}
}
public static boolean isNarcissisticNumber(int num) {
int originalNum = num;
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += Math.pow(digit, 3);
num /= 10;
}
return sum == originalNum;
}
}
-
findNarcissisticNumbersInRange(int M, int N)
: 这个方法用于找出给定区间[M, N]内的所有三位水仙花数。如果输入的M或N不符合题目要求,则输出"Invalid Value.";否则,遍历该区间内的每个数,判断是否为三位水仙花数,并将符合条件的数输出。 -
isNarcissisticNumber(int num)
: 这个方法用于判断一个数是否为水仙花数。对于一个三位数,如果其个位、十位、百位数字的立方和等于该数本身,则该数为水仙花数。在该方法中,通过循环计算各个位上数字的立方和,并与原始数字进行比较,最终返回判断结果。 -
在主函数
main
中,调用findNarcissisticNumbersInRange(100, 400)
来找出100到400之间的所有三位水仙花数。