进阶版水仙花数水是指一个n位数,各个位数字的n次方之和等于该数字本身
两种方法:
第一种,是输入一个数值,判断是否为水仙花数
//打印水仙花数
//水仙花数是指一个n位数,各个位数字的n次方之和等于该数字本身
//如:153=1^3+5^3+3^3
//
//分析:
//153/10=15
//15/10=1
//1/10=0
#include<stdio.h>
#include<math.h>
int main()
{int a = 0;int b[10] = { 0 };printf("输入一个整数:");scanf("%d",&a);int n = 0;int c = a;int i = 0;//判断这个整数,有几位数while (a){//将a的每一位分别存入b[10]b[i++] = a % 10;a = a / 10;//15 1 0n++;//1 2 3}for (i = 0; i < n; i++){printf("%d ",b[i]);}printf("\n");int d = 0;for (i = 0; i < n; i++){d = pow(b[i] ,n) + d;printf("%d ", d);}printf("\n");if (d == c)printf("是水仙花数\n");elseprintf("不是水仙花数\n");return 0;
}
输出的结果:
第二种,是给定一个范围,输出水仙花数
#include<stdio.h>
#include<math.h>
int main()
{int g = 0;for (g = 0; g < 100000; g++){int a = g;int b[10] = { 0 };int n = 0;int c = a;int i = 0;//判断这个整数,有几位数while (a){//将a的每一位分别存入b[10]b[i++] = a % 10;a = a / 10;//15 1 0n++;//1 2 3}int d = 0;for (i = 0; i < n; i++){d = pow(b[i] ,n) + d;}if (d == c)printf("%8d\n",d);}return 0;
}
输出结果: