4.编写函数,实现用户任意输入一个大于100的正整数N(N小于等于999),求100到N之间的水仙花数。(注:一个三位数的水仙花数,它的每一位上的数字的三次方之和等于它本身,如153=1**3+5**3+3**3,则153是水仙花数)
时间: 2024-12-13 08:25:02 浏览: 11
编写程序,输入整数 n,计算并输出 n 的阶乘
要编写一个函数来寻找100到N之间的水仙花数,可以按照以下步骤:
1. 定义一个名为`is_armstrong_number`的辅助函数,用于检查一个数是否是水仙花数。这个函数接受一个整数作为输入,计算其各位数立方和并与原数比较。
```python
def is_armstrong_number(num):
# 对数进行字符串转换以便分取每一位
str_num = str(num)
# 计算各位数立方和
sum_of_cubes = sum(int(digit) ** 3 for digit in str_num)
# 如果和等于原数,返回True,否则False
return sum_of_cubes == num
```
2. 主函数`find_armstrong_numbers`接收用户输入的N值,并遍历从100到N的所有三位数,检查每个数是否是水仙花数。如果是,则将它们添加到结果列表中。
```python
def find_armstrong_numbers(N):
armstrong_numbers = []
for i in range(100, N + 1):
if is_armstrong_number(i):
armstrong_numbers.append(i)
return armstrong_numbers
```
3. 用户调用此函数并打印结果:
```python
if __name__ == "__main__":
n = int(input("请输入一个大于100的正整数N(N小于等于999): "))
result = find_armstrong_numbers(n)
print(f"在100到{n}之间,共有{len(result)}个水仙花数:{result}")
```
阅读全文