(c语言)求n位水仙花数

文章介绍了如何使用C语言编程解决判断一个N位数是否为水仙花数的问题,涉及pow函数的应用和数字分解计算每位数的n次方和。
摘要由CSDN通过智能技术生成

1.题目

输入一个n,求n位数的水仙花数。

分析:

所谓的“水仙花数”是一个N位数其各位数字的N次方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3+ 5^3 + 3^3。

首先,我们需要输入n,然后遍历,例如输入3 ,我们就需要遍历100~999

           这里需要用到pow函数,它的头文件是#include<math.h>.

示例如下:

#include <stdio.h>      /* printf */
#include <math.h>       /* pow */

int main ()
{
  printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
  printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
  printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
  return 0;
}

运行结果:

7 ^ 3 = 343.000000
4.73 ^ 12 = 125410439.217423
32.01 ^ 1.54 = 208.036691

其次,我们需要判断每位的n次方相加是否等于该数本身,这里先需要得到每位的数字,再计算每位的数字的n次方,然后将它们相加。

下面我们来看看如何用代码编写这一程序。

2.实践

#include<stdio.h>
#include<math.h>
int main(){
	int n;
	scanf("%d",&n);   //输入n
	int i,j,k;
	for(i=pow(10,n-1);i<pow(10,n);i++){   //遍历
	   	k=i;
	   	int sum=0;     
	while(k){      
	    j=k%10;       //将个十...位通过取余算出
		k/=10;
		sum+=pow(j,n); //相加
     	} 
        if(sum==i){    //判断每位数的n次方和是否与自身相等
        	printf("%d ",i);  
		}
	}
	return 0;
}

运行结果:

若输入3

153 370 371 407

若输入4

1634 8208 9474

以此类推~

今天的解题思路分享完啦,如果喜欢的话给个赞鼓励一下吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值