编写程序,打印“水仙花数”。所谓“水仙花数”是指一个 N 位正整数(N≥3),其各位数字 N 次幂的和等于该数字本身。例如,153(153 = 1**3 + 5**3 + 3**3)是一个三位水仙花数。 请打印所有三位水仙花数和四位水仙花数。
时间: 2024-03-28 07:42:04 浏览: 168
好的,这里给您提供一个 Python 代码实现:
```python
# 打印三位水仙花数
print("三位水仙花数:")
for i in range(100, 1000):
a = i // 100 # 百位数
b = i // 10 % 10 # 十位数
c = i % 10 # 个位数
if a**3 + b**3 + c**3 == i:
print(i)
# 打印四位水仙花数
print("四位水仙花数:")
for i in range(1000, 10000):
a = i // 1000 # 千位数
b = i // 100 % 10 # 百位数
c = i // 10 % 10 # 十位数
d = i % 10 # 个位数
if a**4 + b**4 + c**4 + d**4 == i:
print(i)
```
输出:
```
三位水仙花数:
153
370
371
407
四位水仙花数:
1634
8208
9474
```
相关问题
编写程序,打印“水仙花数”。所谓“水仙花数”是指一个N位正整数(N≥3),其各位数字N次幂的和等于该数字本身。例如,153(153 = 13 + 53 + 33)是一个三位水仙花数。请打印所有三位水仙花数和四位水仙花数。
好的,以下是程序的代码实现,可以打印出所有的三位水仙花数和四位水仙花数:
```python
for num in range(100, 1000):
# 获取个位、十位和百位数字
digit1 = num // 100
digit2 = (num // 10) % 10
digit3 = num % 10
# 判断是否为水仙花数
if num == digit1**3 + digit2**3 + digit3**3:
print(num)
for num in range(1000, 10000):
# 获取千位、百位、十位和个位数字
digit1 = num // 1000
digit2 = (num // 100) % 10
digit3 = (num // 10) % 10
digit4 = num % 10
# 判断是否为水仙花数
if num == digit1**4 + digit2**4 + digit3**4 + digit4**4:
print(num)
```
程序首先使用两个 for 循环分别遍历三位数和四位数。对于每个数,它会将其各位数字分别提取出来,然后判断是否为水仙花数。如果是,则将其打印出来。
JAVA-水仙花数:水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数。 输入格式:输入一个正整数N(3≤N≤7)。 输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
好的,这是一个关于 Java 水仙花数计算的问题,我会尽力为您解答。
以下是一个 Java 代码示例,可以计算出所有 N 位水仙花数并按递增顺序输出:
```java
import java.util.ArrayList;
import java.util.List;
public class NarcissisticNumber {
public static void main(String[] args) {
int n = 3; // 3≤N≤7,这里设定 N=3
List<Integer> result = getNarcissisticNumbers(n);
for (int num : result) {
System.out.println(num);
}
}
// 计算所有 N 位水仙花数
public static List<Integer> getNarcissisticNumbers(int n) {
List<Integer> result = new ArrayList<>();
int start = (int) Math.pow(10, n - 1);
int end = (int) Math.pow(10, n) - 1;
for (int i = start; i <= end; i++) {
int sum = 0;
int temp = i;
while (temp > 0) {
int digit = temp % 10;
sum += Math.pow(digit, n);
temp /= 10;
}
if (sum == i) {
result.add(i);
}
}
return result;
}
}
```
以上代码使用了一个 `getNarcissisticNumbers` 方法,该方法接受一个整数 `n`,并返回所有 N 位水仙花数的列表。该方法首先计算出 N 位数的范围,然后遍历这个范围内的所有数字,计算每个数字的各位数字的 N 次幂之和,判断是否等于该数字本身,如果等于,则将该数字加入结果列表中。
希望我的回答能够对您有所帮助。
阅读全文