水仙花数(多组输入)
时间: 2023-12-08 17:38:30 浏览: 32
以下是Python实现水仙花数的代码,可以输入多组数据,每组数据以空格隔开三个整数,分别代表起始数和结束数,输出这个区间内的所有水仙花数:
```python
while True:
try:
start, end = map(int, input().split())
res = []
for i in range(start, end+1):
a = i % 10
b = (i // 10) % 10
c = i // 100
if a**3 + b**3 + c**3 == i:
res.append(i)
if res:
print(*res)
else:
print("no")
except:
break
```
相关问题
三位数是否为水仙花数python
三位数是否为水仙花数需要判断该数的各位数字的立方和是否等于该数本身。在Python中,可以通过如下代码实现:
num = int(input("请输入一个三位数:"))
a = num // 100 # 获取百位数
b = num // 10 % 10 # 获取十位数
c = num % 10 # 获取个位数
if num == a**3 + b**3 + c**3: # 判断是否为水仙花数
print(num, "是水仙花数")
else:
print(num, "不是水仙花数")
该代码首先获取用户输入的三位数,然后通过整除和取模运算求出该数的百位、十位和个位数字,最后判断这三个数字的立方和是否等于该数本身。如果是,则输出该数为水仙花数,否则输出该数不是水仙花数。
需要注意的是,Python中的判断相等运算符是“==”,而不是单个的“=”。此外,如果需要判断多个条件,可以使用“and”、“or”等逻辑运算符进行组合。
matlab输入正整数N,输出所有N位水仙花数
水仙花数是指一个n位数(n≥3)的每个位上的数字的n次幂之和等于它本身。例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是一个MATLAB程序,可以输出所有N位水仙花数:
```
N = input('请输入N:'); % 输入N
start_num = 10^(N-1); % 最小的N位数
end_num = 10^N-1; % 最大的N位数
for num = start_num:end_num % 遍历所有N位数
digits = num2str(num) - '0'; % 将数字转换为数组
if num == sum(digits.^N) % 如果是水仙花数,则输出
fprintf('%d ', num);
end
end
```
在上面的程序中,我们先输入N,然后计算出最小的N位数start_num和最大的N位数end_num。接下来,我们使用for循环遍历所有N位数,将数字转换为数组,计算每个位上的数字的N次幂之和,如果等于该数本身,则输出该数。
例如,当N=3时,程序输出所有三位水仙花数:
```
请输入N:3
153 370 371 407
```
需要注意的是,当N比较大时,程序的运行时间会比较长,因为需要遍历很多数。