判断整数m是不是水仙花数:输入一个位数不多于10位的正整数m,判断m是不是水仙花数。 水仙花数:例如输入的m是一个5位数,如果个、十、百、千、万的5次方和等于m,则m是一个5位水仙花数。C语言
时间: 2023-05-27 08:05:03 浏览: 203
实现如下:
#include <stdio.h>
#include <math.h>
int main()
{
long long m, n, sum = 0;
int count = 0, digit;
printf("请输入一个正整数m:");
scanf("%lld", &m);
n = m;
// 计算m的位数
while (n > 0) {
n /= 10;
count++;
}
n = m;
// 计算每个位上的数字的count次方和
while (n > 0) {
digit = n % 10;
sum += pow(digit, count);
n /= 10;
}
// 判断m是否是水仙花数
if (sum == m) {
printf("%lld是水仙花数\n", m);
} else {
printf("%lld不是水仙花数\n", m);
}
return 0;
}
相关问题
判断整数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`函数检查它是否满足水仙花数的条件。该函数通过遍历每一位,并计算其立方,最后比较这个和是否等于原始数字。
判断整数m是不是水仙花数:输入一个位数不多于10位的正整数m,判断m是不是水仙花数。
水仙花数是指一个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, "不是水仙花数")
阅读全文