水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
源代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,d,e,n,sum = 0;
scanf("%d",&n);
a = pow(10,n-1);
b = pow(10,n)-1;
int arr[10] = {0};
for(int i = 0;i<=9;i++)
{
arr[i] = pow(i,n);
}
for(double i=a;i<=b;i++)
{
sum = 0;
c=i;
for(int j=1;j<=n;j++)
{
d = c%10;
sum = arr[d]+sum;
c = c/10;
}
if (sum == i)
{
printf("%d\n", sum);
}
}
}
该程序用于生成并输出所有指定位数(3到7位)的水仙花数,水仙花数是指各位数字的N次幂之和等于其本身的正整数。程序通过循环遍历指定范围内的数,计算每位数字的N次幂和,当和等于原数时输出该数。
646

被折叠的 条评论
为什么被折叠?



