栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
}

运行效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号