思路:
首先输入所求的是几位数的水仙花数;
Step1:通过输入的位数n利用一个for循环求出n位数最小整数start;
Step2:再通过一个for循环目的是为了遍历所有的n位数的水仙花数。
下面通过***C语言***实现算法:
#include <stdio.h>
void main()
{
int n;
scanf("%d",&n);
int start = 1;
//求出最小的n位数
for(int i = 1;i<n;i++)
{
start *= 10;
}
for(int j = start; j<start*10;j++)
{//从最小的n位数j开始遍历到最大的n位数
int sum =0;//代表n位数每位的n次方的和
for(int jj = j; jj>0; jj/=10)
{//通过求n位数的每位数的n次方的和求sum,从n位数的末尾位开始相加
int g = jj%10; //n位数的末尾
int gg = g; //每位数n次幂
for(int l = 1;l<n;l++)
{//求每位数的n次幂
gg *= g;
}
sum += gg;//把每位数的n次幂加起来
}
if(sum == j)
{
printf("%d\n",j);
}
}
}