C语言实现水仙花数的查找

在C语言中,要实现一个代码,应该要了解代码的过程和目的。

首先我们就要知道什么是水仙花数,水仙花数本质是一种自幂数,也叫做阿姆斯特朗数,其定义为:

一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

由此:

我们需要遍历所有的三位数---也就是100->999。所以需要使用循环结构来完成此遍历。
我们需要使用三位数的各个数位的数字来计算幂的和,因此我们可以采用除10取余和除10取整来实现目的。(因为三位数只有个位,十位,百位。因此此方法更为简单,对于位数较大的求数位方法可采用高位来定权重,多次除权取整顺序计算或多次除10取余逆序计算)
最后我们只需判断其各个数位3次幂之和是否等于它本身即可,判断使用if语句即可。

#include<stdio.h>
//#include<math.h>
int main()
{
  //定义变量i为要求的水仙花数,并给其赋初始值100,从100开始循环
  //定义个位,十位,百位
	int i=100,the_unit,decade,hundreds_place;
  //使用while循环,给定循环条件不大于1000
		while(i<1000)
		{
      //定义整形变量,计算结果得到整型
			hundreds_place=i/100;									//计算百位
			decade=i/10%10;												//计算十位
			the_unit=i%10;												//计算个位
			//if判断是否能够输出(注意使用==表示等于,而不是用表示赋值的=)
      //建议判断条件反写,方便调试运行排错
      //(也可使用<math.h>库函数计算三次方)
      //例:pow(the_unit,3)计算个位的三次幂
      if(the_unit*the_unit*the_unit+decade*decade*decade+hundreds_place*hundreds_place*hundreds_place == i)
			{
				printf("%d\t",i);										//打印时使用水平制表符隔开
			}
			i++;																	//自增依次判断
		}
		printf("\n");														//换行隔开控制台提示信息
	return 0;
}



以上,我们完成了水仙花数的查找

下面是代码的运行结果:

153     370     371     407

--------------------------------
Process exited after 0.06904 seconds with return value 0
请按任意键继续. . .

当然,我们还有其他类似的自幂数

一位自幂数: 独身数

四位自幂数: 四叶玫瑰数

五位自幂数: 五角星数

六位自幂数: 六合数

七位自幂数: 北斗七星数

八位自幂数: 八仙数

九位自幂数: 九九重阳数

十位自幂数: 十全十美数

这里我们看到没有二位数的自幂数,这是真的吗?

敲代码试试看,让计算机告诉你。

后面我们还会分享其他代码的思考。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值