Java语言怎么判断一个数字是不是水仙花数?怎么判断100-999里面有多少个水仙花数?为什么水仙花数的个数那么少?
水仙花数是指一个 n 位数(n ≥ 3),它的每个位上的数字的 n 次幂之和等于它本身。
实现方式
public class Main {
public static boolean isNarcissisticNumber(int num) {
String strNum = String.valueOf(num);
int numDigits = strNum.length();
int temp = num;
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
sum += Math.pow(digit, numDigits);
temp /= 10;
}
return sum == num;
}
public static void main(String[] args) {
int count = 0;
for (int i = 100; i <= 999; i++) {
if (isNarcissisticNumber(i)) {
System.out.println(i + " 是水仙花数");
count++;
}
}
System.out.println("100-999之间共有 " + count + " 个水仙花数");
}
}
【以下回答由 GPT 生成】
水仙花数也被称为阿姆斯特朗数,是指一个三位数,其各位数字的立方和等于该数本身。
首先,我们可以用以下步骤来判断一个数字是否为水仙花数:
将数字拆解成各个位数。
对每个位数进行立方操作,并将结果相加。
判断结果是否与原始数字相等。
如果相等,则说明该数字是水仙花数;否则,不是水仙花数。
下面是一个Java代码示例:
public class Main {
public static void main(String[] args) {
int number = 153; // 要判断的数字
int sum = 0;
int temp = number;
while (temp != 0) {
int digit = temp % 10;
sum += Math.pow(digit, 3);
temp /= 10;
}
if (sum == number) {
System.out.println(number + " 是一个水仙花数");
} else {
System.out.println(number + " 不是一个水仙花数");
}
}
}
我们可以使用一个循环来判断100到999之间的每个数字是否为水仙花数,并计数符合条件的数字的数量。
下面是一个Java代码示例:
public class Main {
public static void main(String[] args) {
int count = 0;
for (int number = 100; number <= 999; number++) {
int sum = 0;
int temp = number;
while (temp != 0) {
int digit = temp % 10;
sum += Math.pow(digit, 3);
temp /= 10;
}
if (sum == number) {
count++;
}
}
System.out.println("100到999之间有 " + count + " 个水仙花数");
}
}
水仙花数的数量之所以比较少,是因为满足水仙花数条件的数必须同时满足以下几个条件:
这样的条件相对来说比较特殊,所以符合条件的数字并不多。但在其他数值范围内,也存在满足类似条件的数,例如四位数中的四叶玫瑰数等。
【相关推荐】
public class Main {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
if (isNarcissistic(i)) {
System.out.println(i);
}
}
}
public static boolean isNarcissistic(int num) {
int original = num;
int result = 0;
int n = String.valueOf(num).length();
while (num != 0) {
int remainder = num % 10;
result += Math.pow(remainder, n);
num /= 10;
}
return original == result;
}
}