怎么用C语言表示一个 n 位正整数,其各位数字的 n 次幂之和等于该数本身。
时间: 2024-10-27 15:09:09 浏览: 23
在C语言中,要表示一个n位正整数,其各位数字的n次幂之和等于该数本身,这通常被称为“自乘数”或“完美数字”的问题。比如6(=1^3 + 2^3),因为1*1*1 + 2*2*2 = 9,而9恰好是6的每一位数字的平方和。
下面是一个简单的示例,如何用循环结构检查一个数是否满足条件:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为完美数字
int isPerfectNumber(int num, int power) {
int sum = 0;
for (int i = 1; i <= num / power; ++i) {
if (num % pow(i, power) == 0) {
sum += pow(i, power);
}
}
return sum == num;
}
int main() {
int n;
printf("请输入一个正整数n (作为基数): ");
scanf("%d", &n);
for (int number = n; ; ++number) { // 循环检查从n开始的所有数
if (isPerfectNumber(number, n)) {
printf("找到一个完美数字:%d\n", number);
break;
}
}
return 0;
}
```
在这个程序中,`isPerfectNumber`函数会计算给定数`num`的每位数字的`power`次方之和,并与原数比较。如果相等,则返回`true`,表明找到了符合条件的数。
阅读全文