判断整数m是不是水仙花数:输入一个位数不多于10位的正整数m,判断m是不是水仙花数。
时间: 2023-05-27 13:05:02 浏览: 121
水仙花数是指一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是Python代码实现:
m = int(input("请输入一个正整数:"))
n = len(str(m)) # 获取m的位数
sum = 0
temp = m
while temp > 0:
digit = temp % 10 # 获取个位数字
sum += digit ** n # 将每个位上的数字的n次幂累加
temp //= 10 # 去掉个位数字
if m == sum:
print(m, "是水仙花数")
else:
print(m, "不是水仙花数")
相关问题
判断整数m是不是水仙花数:输入一个位数不多于10位的正整数m,判断m是不是水仙花数。 水仙花数:例如输入的m是一个5位数,如果个、十、百、千、万的5次方和等于m,则m是一个5位水仙花数。用c语言编写
判断一个整数是否是水仙花数(也称为 narcissistic number 或 pluperfect digital invariant),可以使用三重循环来计算各个位数的立方和,然后将这个和与原数字比较。以下是使用 C 语言的一个简单示例:
```c
#include <stdio.h>
int is_narcissistic(int num) {
int digits[10], len = 0; // 存储每一位的临时数组和长度
while (num > 0) {
digits[len++] = num % 10;
num /= 10;
}
int sum = 0;
for (int i = 0; i < len; i++) {
sum += pow(digits[i], 3); // 计算每个位的立方并累加
}
return sum == num;
}
int main() {
int m;
printf("请输入一个不超过10位的正整数: ");
scanf("%d", &m);
if (is_narcissistic(m)) {
printf("%d 是一个水仙花数。\n", m);
} else {
printf("%d 不是水仙花数。\n", m);
}
return 0;
}
```
在这个程序中,首先获取用户输入的数字`m`,然后通过`is_narcissistic`函数检查它是否满足水仙花数的条件。该函数通过遍历每一位,并计算其立方,最后比较这个和是否等于原始数字。
阅读全文