四叶玫瑰数python
时间: 2025-05-08 07:06:22 浏览: 20
### 四叶玫瑰数的Python实现
四叶玫瑰数是指一个四位数,其各个位上数字的4次幂之和正好等于该数本身。为了找出所有的四叶玫瑰数,可以通过遍历所有可能的四位数值并检查它们是否满足上述条件。
#### 方法一:使用`for`循环与字符串处理
这种方法通过将整数转换成字符串来逐个访问每一位上的数字,并计算这些数字的4次幂之和:
```python
n = 0 # 统计找到的四叶玫瑰数的数量
for i in range(1000, 10000):
sum_of_powers = 0
temp_num_str = str(i)
for digit_char in temp_num_str:
sum_of_powers += int(digit_char) ** 4
if sum_of_powers == i:
print(f"{i} 是一个四叶玫瑰数")
n += 1
print(f"总共有 {n} 个四叶玫瑰数被发现") # 输出总数目
```
这段代码会打印出符合条件的所有四叶玫瑰数以及总的数量[^3]。
#### 方法二:分解每位数字进行判断
另一种方式是不依赖于字符串操作,而是直接对每一个候选数执行除法运算以获取千位、百位、十位和个位的具体值,之后同样求解各位数字的4次幂之和并与原数比较:
```python
count = 0 # 记录匹配到的次数
for candidate in range(1000, 10000):
thousands_place = candidate // 1000 # 千位
hundreds_place = (candidate % 1000) // 100 # 百位
tens_place = ((candidate % 1000) % 100) // 10 # 十位
ones_place = candidate % 10 # 个位
power_sum = thousands_place**4 + \
hundreds_place**4 + \
tens_place**4 + \
ones_place**4
if power_sum == candidate:
count += 1
print(candidate,"是一个四叶玫瑰数")
if not count:
print("未找到任何四叶玫瑰数")
else:
print(f"总共找到了{count}个这样的特殊数字.")
```
这种做法避免了显式的字符转换过程,但逻辑更加直观易懂[^4]。
两种方法都能有效地识别出给定范围内存在的全部四叶玫瑰数;选择哪种取决于个人偏好或是具体应用场景下的效率考量。
阅读全文
相关推荐


















