水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1^3+5^3+3^3 。 本题要求用C语言编写程序,计算所有N位水仙花数。
时间: 2024-11-12 10:16:40 浏览: 146
水仙花数是一个有趣的数学概念,在C语言中编写程序找出所有的N位水仙花数可以采用循环遍历的方式。这里是一个简单的步骤:
1. 定义一个函数,比如`is narcissistic(int num)`,接收一个整数作为参数,检查它是否是水仙花数。
2. 判断条件是将输入的每一位转换成整数后取N次方(N由用户输入确定),然后求和,如果这个和等于原数,就返回true,否则返回false。
3. 使用for循环,从最小的N位数(通常是10^(N-1))开始,一直到最大的N位数(9 * 10^(N-1)),对每一个数调用`is narcissistic()`函数。
下面是一个示例代码片段:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_narcissistic(int num, int N) {
int sum = 0;
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, N);
temp /= 10;
}
return (num == sum);
}
int main() {
int N;
printf("请输入数字的位数(N >= 3): ");
scanf("%d", &N);
if (N < 3) {
printf("输入错误,位数必须大于或等于3.\n");
return 0;
}
for (int i = 100; // 三位数的最小值
i <= pow(10, N); // N位数的最大值
i++) {
if (is_narcissistic(i, N)) {
printf("%d 是一个%u位的水仙花数。\n", i, N);
}
}
return 0;
}
```
阅读全文