Python中n位数的水仙花程序
时间: 2024-09-09 18:03:35 浏览: 48
在Python中,水仙花数(又称 Narcissistic Number 或 Pluperfect Digital Invariant)是指一个n位正整数,其每一位数字的立方和等于该数本身。例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153。
编写一个Python程序来检查某个数字是否为水仙花数,你可以这样做:
```python
def is_narcissistic_number(n):
# 将输入转换为字符串以方便处理每个位数
str_num = str(n)
# 获取数字的位数
num_digits = len(str_num)
# 计算各个位数的立方和
sum_of_cubes = sum(int(digit) ** num_digits for digit in str_num)
# 检查和是否等于原数字
return n == sum_of_cubes
# 测试函数
for i in range(100, 1000): # 可以调整范围来测试更多数字
if is_narcissistic_number(i):
print(f"{i} 是一个水仙花数")
相关问题
Python6位数的水仙花程序
在Python中,水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。如果你想编写一个函数来检查一个六位数是否为水仙花数,你需要首先将这个六位数分解成三个独立的两位数,然后分别计算这三个数字的立方和。
以下是一个简单的Python程序,它实现了这个功能:
```python
def is_hydrangea_number(num):
# 将六位数转换为字符串,并提取每一位
num_str = str(num)
first_two_digits = int(num_str[:2])
second_two_digits = int(num_str[2:4])
# 计算每个部分的立方和
cube_of_first_two = first_two_digits ** 3
cube_of_second_two = second_two_digits ** 3
# 检查剩下的最后两个数字
last_two_digits = int(num_str[-2:])
total_sum = cube_of_first_two + cube_of_second_two + last_two_digits
# 如果总和等于原始数,就是水仙花数
return total_sum == num
# 测试几个例子
test_numbers = [123456, 987654, 153]
for number in test_numbers:
print(f"{number} 是水仙花数吗? {is_hydrangea_number(number)}")
Python四位数水仙花
以下是Python实现四位数水仙花的代码:
```python
for i in range(1000, 10000):
a = i // 1000
b = i // 100 % 10
c = i // 10 % 10
d = i % 10
if i == a ** 4 + b ** + c ** 4 + d ** 4:
print(i)
```
以上代码中,我们使用了for循环遍历1000到9999之间的所有四位数,然后使用整除和取模运算符来获取每个数字的千位、百位、十位和个位数字,最后判断该四位数是否为水仙花数,如果是则输出该数。
阅读全文