用C语言判断是否为水仙花数(自幂数)

实现思路:

        1.先确定数的位数n(千万不能拿i 去 i  /= 10)

        2.计算每一位的n次方之和 sum

        3.判断 sum == i

注意:pow的返回值为double,应该强制类型转换

如果使用库函数的pow()函数记得引头文件#include<math.h>

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

//C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 x^y。
//实现水仙花数(自幂数)

double my_pow(int n,int k){
	if(k > 0){
		return n * my_pow(n,k-1);
	}
	else if(k == 0)
		return 1;
	else
		return 1.0 / ( n*my_pow(n,-k) );	
}
int main(){
	int i = 0;
	for(i=0;i<1000000;i++){
	//1.确定位数 n
		int n =0;
		int temp = i;
		int sum=0;
		while(temp){
			n++;
			temp /=10;
		}
	//计算每一位的n次方和 sum 
		temp = i;
		while(temp){
			sum += (int)my_pow(temp%10, n) ;
			temp /=10;
		}
	// 判断 sum == n 
	if(sum == i)
		printf("%d ",i);
	} 
    printf("\n");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值