C语言--输出0~999之间的所有水仙花数

C语言--输出0~999之间的所有水仙花数,第1张

C语言--输出0~999之间的所有水仙花数 输出0~999之间的所有水仙花数

在动手写代码之前,我们得先搞明白什么是水仙花数:

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。(百度百科)

由此我们知道,只有三位数才有可能是水仙花数,因此我们需要使用一个for循环来产生100-999之间的数字。

其次一个重要问题就是如何把一个三位数的每个位的数字单独分出来以供我们进行立方运算。

对于一个三位数n,它的个位和百位很好分离出来:

对于个位:n%10
对于百位:n/100

但是十位怎么分离呢?我们可以举个例子,就用153来举例吧:要得到153的十位数字5,我们可以先得到53,再用53/10来得到十位数字5。如何得到53呢?其实也很简单,只需要用153-100*153/100,于是可以想到得到n的十位数字的公式:

对于十位:n-100*n/100

有了分离的三位上的数字,只需要进行立方运算求和即可,这里可以考虑使用pow()函数。pow(a,b)表示计算a的b次方。但需要注意的是,使用这个函数需要引入头文件#include

代码如下:

int main()
{
	int n = 0;
	int ge = 0;
	int shi = 0;
	int bai = 0;
	for (n = 100; n < 1000; n++)
	{
		ge = n % 10;
		shi = (n - 100 * (n / 100)) / 10;
		bai = n / 100;
		if (n == pow(ge, 3) + pow(shi, 3) + pow(bai, 3))
		{
			printf("%d ", n);
		}

	}
	return 0;
}

运行效果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5713784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存