欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求0-999之间的水仙花数

程序员文章站 2022-05-12 12:28:13
...

   “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;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;
}

这样输出的结果如下图

 

求0-999之间的水仙花数