【详解】使用java解决-打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙
【摘要】 使用Java解决 - 打印出所有的水仙花数前言水仙花数(Narcissistic number)也被称为超完全数字不变数、自恋数、自幂数,是指一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身。对于三位数而言,如果一个三位数的各位数字的立方和等于这个数本身,那么这个数就是水仙花数。例如,153 是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。本...
使用Java解决 - 打印出所有的水仙花数
前言
水仙花数(Narcissistic number)也被称为超完全数字不变数、自恋数、自幂数,是指一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身。对于三位数而言,如果一个三位数的各位数字的立方和等于这个数本身,那么这个数就是水仙花数。
例如,153 是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
本文将通过 Java 语言来实现一个简单的程序,用于找出并打印所有三位数中的水仙花数。
实现思路
- 确定范围:由于水仙花数是三位数,因此我们的查找范围是 100 到 999。
- 分解数字:对于每一个三位数,我们需要将其分解为百位、十位和个位。
- 计算立方和:计算这三个位置上数字的立方和。
- 比较结果:如果计算出的立方和等于原数,则该数为水仙花数。
- 输出结果:将找到的所有水仙花数打印出来。
Java代码实现
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍历100到999之间的所有数字
for (int num = 100; num <= 999; num++) {
if (isNarcissistic(num)) {
System.out.println(num);
}
}
}
/**
* 判断一个数是否为水仙花数
* @param num 待判断的数
* @return 如果是水仙花数返回true,否则返回false
*/
private static boolean isNarcissistic(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;
}
}
运行结果
运行上述代码后,程序将输出所有的三位数水仙花数:
153
370
371
407
下面是一个用Java编写的示例代码,用于找出并打印所有的水仙花数(即三位数中,其各个位上的数字立方和等于该数本身的数)。
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍历所有三位数,从100到999
for (int number = 100; number <= 999; number++) {
if (isNarcissistic(number)) {
System.out.println(number);
}
}
}
/**
* 判断一个数是否是水仙花数
* @param number 要判断的数
* @return 如果是水仙花数返回true,否则返回false
*/
public static boolean isNarcissistic(int number) {
int originalNumber = number;
int sum = 0;
// 提取每一位数字并计算立方和
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, 3);
number /= 10;
}
// 判断立方和是否等于原数
return sum == originalNumber;
}
}
代码解释:
- 主方法
main:
- 使用一个
for 循环遍历从100到999的所有三位数。 - 对于每个数,调用
isNarcissistic 方法判断它是否是水仙花数。 - 如果是水仙花数,则打印该数。
- 辅助方法
isNarcissistic:
- 接受一个整数
number 作为参数。 - 保存原始数
originalNumber,以便后续比较。 - 使用
while 循环提取每一位数字,并计算其立方和。 - 最后,判断立方和是否等于原始数,如果是则返回
true,否则返回 false。
运行结果:
运行上述代码后,输出将是所有的水仙花数:
153
370
371
407
这些数都是三位数,并且它们各自的各位数字的立方和等于该数本身。希望这个示例对你有帮助!如果有任何问题或需要进一步的解释,请随时告诉我。当然可以!下面是一个详细的Java程序,用于找出并打印所有的水仙花数。
什么是水仙花数?
水仙花数(Narcissistic number)是指一个三位数,其各位数字的立方和等于该数本身。例如,153 是一个水仙花数,因为: \[ 153 = 1^3 + 5^3 + 3^3 \]
Java代码实现
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍历所有三位数,从100到999
for (int num = 100; num <= 999; num++) {
if (isNarcissistic(num)) {
System.out.println(num);
}
}
}
// 判断一个数是否是水仙花数
public static boolean isNarcissistic(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;
}
}
代码解释
- 主方法
main:
- 使用一个
for 循环遍历所有三位数,从100到999。 - 对于每一个数,调用
isNarcissistic 方法判断它是否是水仙花数。 - 如果是水仙花数,则打印该数。
- 辅助方法
isNarcissistic:
- 接受一个整数
num 作为参数。 - 将原数保存在
originalNum 中,以便后续比较。 - 初始化
sum 为0,用于存储各位数字的立方和。 - 使用
while 循环提取每一位数字:
-
digit = num % 10:取出当前数的个位数。 -
sum += Math.pow(digit, 3):计算该位数字的立方并累加到 sum。 -
num /= 10:去掉当前数的个位数。
- 最后,判断
sum 是否等于 originalNum,如果相等则返回 true,否则返回 false。
运行结果
运行上述程序,输出将是所有三位数中的水仙花数:
153
370
371
407
这些数都是满足条件的水仙花数。希望这个解释对你有帮助!如果有任何问题或需要进一步的说明,请随时告诉我。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者


评论(0)