输出n位的水仙花数

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

#include <stdio.h>
int main()
{ int a,s,q=0,m,t=1;
  int x,y,z,sum=0,n,b=1,w=1; 
  printf("请输入你想要几位数的水仙花数:"); 
  scanf("%d",&a);//4
  s=a;
while(s>1)//4,3,2,1
{  t=t*10;//10,100,1000
    s--;//3,2,1
}
   m=t;//1000,最小的四位数 
   for(m=t;m<t*10;m++) //m=1000,m<10000,10000最大的四位数 
   {    y=m;
        q=0;
        sum=0;
        while(q<a)//分离个十百千位 
       {
		   x=y%10;
   	        y=y/10;
   	        q++;
   	        w=1;
   	        b=1;//在for循环结束后重新定义b的值 
   	       for(b=1;b<=a;b++)//分离出来的数 ,x的a次方,如a=4时,x*x*x*x 
			  {w=w*x;
			  }
    	    sum=sum+w;//将分离出来的数次方后相加 
            }if(m==sum)//判断是不是水仙花数 
		    {
            n++; 
            printf("%d\n",m);
            }
	 }
   printf("总共有%d种水仙花数",n); 
   return 0;
}

我也在不断的学习,希望在学习的过程中,把代码慢慢的变简练,希望指出!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值