【C语言】求0-999之间的水仙花数

   “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。水仙花数也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,是指一N位数,其各个数位之N次方和等于该数。
 

 

      既然是求0-999之间的水仙花数,那意思就是求0-999之间的所有1位数、2位数、3位数的水仙花数。

 

      根据定义,1位数的水仙花数每个数位的1次方之和等于它本身。2位数的水仙花数每个数位的平方之和等于它本身。3位数的水仙花数每个数位的3次方之和等于它本身。

      那么,我们可以把题理解为判断0-999之间的每一个数字是不是符合水仙花数的定义,若符合,则输出若不符合,则不输出。

       假设这个数是三位数  i     (1认为是001进行运算 )

       那么,它的个位数字就是  i1=i%10   //让这个数与10进行取余运运算

       十位数字就是 i2=(i/10)%10   //让这个数先除以10再与10求余运算

       百位数字就是 i3=i/100    //让这个数直接与100进行除法运算,因为在C语言中,除法运算时取整

       这样在进行判断,符合条件则输出,不符合条件不输出!

       据此我们可以写出以下代码!

#include <stdio.h>
int main()
{
	int i;
	for (i = 0; i < 1000; i++)
	{
		int i1 = i % 10; //*求个位数字*/
		int i2 = (i / 10) % 10; //*求十位数字*/
		int i3 = i / 100; //*求百位数字*/
		if (i1*i1*i1 + i2*i2*i2 + i3*i3*i3 ==i)
			printf("%d\n", i);
	}
	system("pause");
	return 0;
}

这样输出的结果如下图

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值