手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

求N位数的所有水仙花数

时间:2021/4/4 12:28:55|来源:|点击: 次

求N位数的所有水仙花数

  水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1³+5³+3³。 本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。

C语言源代码如下:

#include<stdio.h>
#include<math.h>


#define true 1
#define false 0

int isWF(int a,int n){     //判断是否是水仙花数 
	int i;
	int sum=0;
	int now;  //暂存当前的余数 
	int b=a; //记录原始数据 
	do{
		now=a%10;
		sum+=pow(now,n);
		a=a/10;
	}while(a>0);
	
	if(sum==b)
		return true;
	else
		return false;
}

int main(){
	int n,i;
	scanf("%d",&n);
	if(n>=3){  
		for(i=pow(10,n-1);i<pow(10,n);i++){   //确定所取范围 
				if(isWF(i,n))
					printf("%d\n",i);
			}
	}
	return 0;
}

Copyright © 2002-2019 某某自媒体运营 版权所有