程序输入n,找出所有n位的水仙花数。要求水仙花数放在列表ls中,并输出该列表。
时间: 2024-05-10 22:18:18 浏览: 96
水仙花数是指一个n位数,其各位数字的n次方之和等于该数本身。例如,153是一个三位数的水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是一个实现:
```python
n = int(input("请输入n:"))
ls = []
for i in range(10**(n-1), 10**n):
s = str(i)
sum = 0
for j in s:
sum += int(j)**n
if sum == i:
ls.append(i)
print(ls)
```
首先,我们输入n并创建一个空列表ls。然后,我们使用一个循环遍历所有可能的n位数。在每次循环中,我们将当前数转换为字符串,并计算其各位数字的n次方之和。如果该和等于原数,我们将其添加到列表ls中。最后,我们输出结果列表。
相关问题
程序输入n,找出所有n位的水仙花数,并放入列表中输出
好的,这是一个简单的Python程序,可以实现你的需求:
```python
n = int(input("请输入n:"))
result = []
for i in range(10**(n-1), 10**n):
sum = 0
temp = i
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
if sum == i:
result.append(i)
print(result)
```
这个程序会先让你输入n,然后通过循环计算出所有n位的水仙花数,把它们放入一个列表中并输出。注意,这里的n必须大于等于3才会有水仙花数。
matlab中输入正整数N,输出所有N位水仙花数
水仙花数,也被称为阿姆斯特朗数,是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为 $1^3 + 5^3 + 3^3 = 153$。
以下是MATLAB的实现代码:
```matlab
function narcissistic_numbers(n)
% 输入正整数N,输出所有N位水仙花数
% n: 水仙花数的位数
if n <= 0
error('输入参数必须是正整数!');
end
% 计算N位数的最大值和最小值
min_num = 10^(n-1);
max_num = 10^n-1;
% 遍历所有N位数,判断是否为水仙花数
for i = min_num:max_num
digits = num2str(i) - '0'; % 将数字转换为数组
if sum(digits.^n) == i % 判断是否为水仙花数
disp(i);
end
end
```
使用方法:在MATLAB命令窗口中输入 `narcissistic_numbers(N)`,其中N为正整数,即可输出所有N位的水仙花数。