水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 3 +5 3 +3 3 。 本题要求c语言编写程序,计算所有N位水仙花数。
时间: 2024-10-10 17:03:10 浏览: 173
水仙花数列
水仙花数是一种有趣的数学现象,它是通过将一个整数的每一位数字分别立方后求和,如果得到的结果正好等于原数本身,则称这个数为水仙花数。在C语言中编写程序来找出所有的水仙花数,可以采用循环遍历的方式,对每个N位数进行判断。
以下是一个简单的C语言示例,用于查找并打印出小于1000的所有水仙花数:
```c
#include <stdio.h>
int is narcissistic(int num) {
int digits[10], digit_sum = 0;
while (num > 0) {
digits[num % 10]++;
num /= 10;
}
for (int i = 0; i <= 9; ++i) {
if (digits[i] != 0) {
digit_sum += pow(i, digits[i]);
}
}
return digit_sum == num;
}
int main() {
for (int n = 3; ; n++) {
int start = pow(10, n - 1);
int end = start * 10;
if (end > 1000) break;
for (int num = start; num < end; ++num) {
if (is_narcissistic(num)) {
printf("%d ", num);
}
}
}
return 0;
}
```
在这个程序中,`is_narcissistic` 函数用于检查一个数字是否是水仙花数,主函数则遍历一定范围内的N位数,并调用该函数。当数字大于1000时,跳出循环,结束查找。
阅读全文