翁恺C语言—水仙花数

157 阅读1分钟

/* 水仙花数是指一个n位正整数(n>=3),它的每个位上得数字得n次幂之和等于它本身 例如:153=1^3+5^3+3^3.*/

#include <stdio.h>

#include <math.h>

int main()

{

int n,mask;
printf("输入3~7的整数,表示位数:");
scanf("%d",&n);

mask=pow(10,n-1);                               // n=3 → mask=100
printf("mask=%d\n",mask);

int x,start=mask,end=(mask*10)-1;              // start=100,end=999
printf("%d,%d\n",start,end);

for(start;start<=end;start++)
{
	int t=mask,o=start,sum=0;
	while(t>0)
	{
		x=o/t;	                      // 得到每一位,循环求n次幂之和。
		sum=pow(x,n)+sum; 
		o=o%t;
		//printf("%d ",x);
		t/=10;
	}
	if(sum==start)
	{
		printf("%d\n",sum);
	 } 
	//printf("\n");
}
	
return 0; 

}