c语言输出水仙花数(所有正数)

/*求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。*/
//这里start和end为需要求的区间[start,end],正数随便填,但要满足start<=end
void daffodilNumber(int start, int end){
	//做判断,start<=end,start>=0,不满足,就是输入数据有误
	if (start <= end&&start>=0){

		//遍历到每一个数字
		for (int i = start; i <= end; i++){
			//先判断数有多少位
			int count = 0;	//统计一个数字有多少位
			for (int j = i; j != 0; j /= 10){
				count++;
			}

			//这是把每一位的n次方累加到compare里
			int compare = 0;//最后要做比较的数字
			int temp = i;
			for (int k = 0; k < count; k++){

				compare = compare + pow((temp % 10), count);	//把数字每一位的count次方存入compare
				temp /= 10;
			}

			//作比较
			if (compare == i){
				printf("%d为水仙花数\n", i);
			}
		}

	}
	else{
		printf("输入数据有误!!!\n");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值