7-1 N位水仙花数python
时间: 2023-06-24 19:06:35 浏览: 97
水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
下面是一个求解 N 位水仙花数的 Python 代码:
```python
n = int(input("请输入位数:"))
for i in range(10**(n-1), 10**n):
num = str(i)
sum = 0
for j in num:
sum += int(j)**n
if sum == i:
print(i)
```
代码中,我们通过输入 N 来确定要求解的水仙花数位数。然后,我们循环遍历所有的 N 位数,计算每个数的各个位上数字的 N 次幂之和。如果该和等于该数本身,则输出该数,即为 N 位水仙花数。
需要注意的是,这段代码的时间复杂度较高,当 N 较大时,运行时间会比较长。
相关问题
1-999水仙花数python
以下是1至999的水仙花数Python代码:
```
for i in range(1, 1000):
num_str = str(i)
n = len(num_str)
sum = 0
for j in range(n):
sum += int(num_str[j]) ** n
if sum == i:
print(i)
```
输出结果:
```
1
2
3
4
5
6
7
8
9
153
370
371
407
```
用python风格,计算100-999的所有水仙花数
在Python中,水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。我们可以编写一个函数来找出100到999范围内的所有水仙花数:
```python
def find_pythagorean_triplets(start, end):
def is_pentagonal_number(n):
sqrt_n = int(n ** 0.5)
return (sqrt_n * (sqrt_n + 1) // 2) == n
for num in range(start, end + 1):
# 将百位、十位和个位分开,并计算它们的立方和
digits = [int(digit) for digit in str(num)]
if len(digits) != 3:
continue
sum_of_cubes = sum([digit**3 for digit in digits])
# 检查是否是水仙花数
if sum_of_cubes == num:
print(num)
find_pythagorean_triplets(100, 999)
```
当你运行这个脚本时,它会打印出100到999之间所有的水仙花数。
阅读全文