编写一个函数判断一个四位数是不是玫瑰花数
时间: 2024-12-12 17:23:41 浏览: 6
玫瑰花数是一种特殊的四位数,它的特点是每个位上数字的平方和等于原数本身。例如,153和370都是玫瑰花数,因为 \(1^2 + 5^2 + 3^2 = 1 + 25 + 9 = 35\),而 \(3^2 + 7^2 + 0^2 = 9 + 49 + 0 = 58\),虽然58不等于370,但它满足条件370 - 58 = 312,312也是玫瑰花数。
编写一个Python函数来检查一个四位数是否是玫瑰花数:
```python
def is_rosie_number(num):
num_str = str(num)
if len(num_str) != 4 or not num_str.isdigit():
return False
digits = [int(digit) for digit in num_str]
sum_of_squares = sum(digit ** 2 for digit in digits)
# 检查是否满足条件
while True:
difference = abs(sum_of_squares - num)
if difference < 100:
break
else:
# 更新sum_of_squares并减去较大的数
diff_digits = [int(digit) for digit in str(difference)]
sum_of_squares -= max(diff_digits) * max(diff_digits)
return sum_of_squares == num
# 示例测试
print(is_rosie_number(153)) # 输出: True
print(is_rosie_number(370)) # 输出: True
print(is_rosie_number(371)) # 输出: False
```
这个函数首先将输入转换成字符串,然后计算每个位的平方和。接着不断尝试从总和中减去较大数直到差值小于100,如果最终得到的差值等于原来的数,则说明它是玫瑰花数。如果不是,返回False。
阅读全文