(3). 编写程序,输出所有的玫瑰花数。(玫瑰花数,即一个四位数,千位数的四次方+百位数的四次方+十位数的四次方+个位数的四次方=本身)
时间: 2025-06-25 16:13:04 浏览: 8
### 关于玫瑰花数的程序实现
玫瑰花数是一种特殊的四位数,满足条件:该数等于其每一位数字的四次方之和。以下是基于 C 语言和 Python 的两种实现方式。
#### C 语言实现
以下是一个完整的 C 程序来查找并打印所有符合条件的玫瑰花数:
```c
#include <stdio.h>
void findRoseNumbers() {
int i, a, b, c, d;
for (i = 1000; i < 10000; i++) { // 遍历所有四位数
a = i % 10; // 取个位
b = i / 10 % 10; // 取十位
c = i / 100 % 10; // 取百位
d = i / 1000; // 取千位
if (a * a * a * a + b * b * b * b + c * c * c * c + d * d * d * d == i) {
printf("玫瑰花数=%d\n", i);
}
}
}
int main() {
findRoseNumbers();
return 0;
}
```
此代码通过遍历 `[1000, 9999]` 范围内的所有四位数,并计算它们的每位数字的四次方之和,最终筛选出符合条件的玫瑰花数[^1]。
---
#### Python 实现
Python 提供了一种更简洁的方式来解决这个问题。下面是相应的 Python 实现代码:
```python
def find_rose_numbers():
rose_numbers = []
for num in range(1000, 10000): # 遍历所有四位数
digits = [int(digit) for digit in str(num)] # 将数字拆分为单个数字列表
if sum([digit ** 4 for digit in digits]) == num: # 判断是否为玫瑰花数
rose_numbers.append(num)
return rose_numbers
if __name__ == "__main__":
result = find_rose_numbers()
print(f"找到的玫瑰花数有: {result}")
```
这段代码同样实现了对 `[1000, 9999]` 范围内所有四位数的遍历,并利用列表推导式简化了逻辑处理过程[^2]。
---
### 结果分析
运行以上任意一种代码后,可以得到如下结果:
- 符合条件的玫瑰花数共有三个:分别是 `1634`, `8208`, 和 `9474`[^3]。
这些数值均满足定义中的条件——即它们各自等于自己各个位数字的四次方之和。
---
阅读全文
相关推荐


















