
水仙花数(Narcissistic number)也被称为超完全数字不变数、自恋数、自幂数,是指一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身。对于三位数而言,如果一个三位数的各位数字的立方和等于这个数本身,那么这个数就是水仙花数。
例如,153 是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
本文将通过 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 \]
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这些数都是满足条件的水仙花数。希望这个解释对你有帮助!如果有任何问题或需要进一步的说明,请随时告诉我。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。