水仙花数"/>
C语言计算所有N位水仙花数
来自武科大 oj 的一道简单题。
Description
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153 = 1^3+ 5^3+ 3^3153=13+53+33
要求编写程序,计算所有N位水仙花数。
Input
一个正整数N(3≤N≤8)
Output
按递增顺序输出所有N位水仙花数,每个数字占一行。
枚举法遍历,找出符合条件的数即可。代码如下。
#include <stdio.h>
//定义一个求数的N次幂函数,接收两个参数,num 数字和 times 幂的次数
int pow(int num, int times) {int temp = num;for (int i = 1; i < times; i++) {num *= temp;}return num;
}
int main() {int N, min, max;scanf("%d", &N);//min max 为上下界min = pow(10, N - 1);max = pow(10, N);for (int i = min; i < max; i++) {int num = i;int sum = 0;//循环求数字的每个位数的N次幂的和while (num > 0){sum += pow(num % 10, N);num /= 10;}//相等即为水仙花数if (i == sum) {printf("%d\n", i);}}return 0;
}
更多推荐
C语言计算所有N位水仙花数
发布评论