水仙花数是指一个n位数,其各位数字的n次方之和等于该数本身。例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153。 以下是输出所有n位水仙花数的代码
时间: 2023-06-19 21:05:27 浏览: 99
以下是输出所有n位水仙花数的 Python 代码:
```python
def get_narcissistic_numbers(n):
results = []
for i in range(10**(n-1), 10**n):
sum_of_powers = sum([int(digit)**n for digit in str(i)])
if sum_of_powers == i:
results.append(i)
return results
```
你只需要调用 `get_narcissistic_numbers(n)` 函数,传入参数 `n` 即可输出所有 n 位水仙花数。例如,要输出所有 3 位水仙花数,可以调用 `get_narcissistic_numbers(3)`。
相关问题
输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数字本身
水仙花数是指一个n位数,其各位数字的n次方和等于该数字本身。在此题中,n=3。
Python代码如下:
```python
for i in range(100, 1000):
x = i // 100 # 百位
y = (i // 10) % 10 # 十位
z = i % 10 # 个位
if i == x ** 3 + y ** 3 + z ** 3:
print(i)
```
输出结果为:
```python
153
370
371
407
```
因此,水仙花数为153、370、371和407。
用C语言编写一段求出 0~100000 之间的所有“水仙花数”并输出“水仙花数”是指一个 n 位数,其各位数字的 n 次方之和确好等于该数本身
#include <stdio.h>
int main() {
int i, j, k, n, sum;
for (i = 0; i <= 9; i++) {
sum = i * i * i;
if (sum == i) {
printf("%d ", i);
}
}
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
sum = i * i * i + j * j * j;
if (sum == i * 10 + j) {
printf("%d ", i * 10 + j);
}
}
}
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 100 + j * 10 + k) {
printf("%d ", i * 100 + j * 10 + k);
}
}
}
}
for (n = 4; n <= 6; n++) {
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 100 + j * 10 + k) {
printf("%d ", i * 100 + j * 10 + k);
}
}
}
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 1000 + j * 100 + k * 10 + i) {
printf("%d ", i * 1000 + j * 100 + k * 10 + i);
}
}
}
}
}
return 0;
}