#include <stdio.h>
int main()
{
int N;
int i; //求水仙花数范围
int ws;
int data = 100; //范围里最小的自然数,用来比较
int data2; //从范围里最小自然数开始遍历
int data3; //遍历的数,用来取余数(获取最后一位数字),然后取整,再取余,再取整,直到取余为0
int yushu; //获取每次取余数的值
int sum_yushu; //获取每次余数的N次方
int sum; //每一位上N次方的数的总和,然后与每一次data2的值比较是否相等,相等则为水仙花数
puts("请输入一个大于等于3的正整数N,输出n位数的水仙花数");
scanf("%d",&N);
for(i=3 ; i<N ; i++){
data = data*10;
yushu = data;
data2 = data;
data3 = data;
}
for(data2=100 ; data2<data*10 ; data2++){
data3 = data2;
sum = 0;
while( data3 > 0 ){
yushu = data3 % 10;
sum_yushu = 1;
for(ws = N ; ws>0 ; ws--){
sum_yushu = sum_yushu*yushu;
}
sum = sum + sum_yushu;
data3 = data3 / 10;
}
if(sum == data2){
printf("%d\n",data2);
continue;
}
}
return 0;
}
自己看都费劲,是真麻G!