您的位置:首页 > 编程语言 > C语言/C++

【C语言】输出100~999之间的所有“水仙花数”

2017-11-11 17:13 811 查看
  “水仙花数”

  “水仙花数”又称为“阿姆斯特朗数”。如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为“水仙花数”。如:153=1³+5³+3³。

  问题:输出100~999之间的所有“水仙花数”。

  实现思路:

  根据“水仙花数”的特点分析不难发现,只要拿到某个三位数(定义一个变量m,初始值设为100)的各位数字,再进行判断它们的立方和是否等于m,若等于,则输出m,否则,m自增1。上述过程是一个循环,只要m<=999,循环继续执行。

  下面讨论m的各位数字如何获得。首先需要定义三个变量i,j,k,分别记录m的各位数字。

  对于一个三位数m,其百、十、个位数字为i,j,k,则可知:i *100+j *10+k *1=m

  百位数(i):因为m为一个三位数,所以m/100等于其百位数字。

  十位数(j):若对m有m/10,则可以得到m的百位和十位组成的一个两位数,如:123/10=12。再用这个两位数减去i*10,便得到了十位数字j。

  个位数(k):上面已经得到m的百位和十位,易得个位数为m-i*100-j *10。

  程序代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j, k;
int m = 100;
while (m<=999)
{
i = m / 100;
j = m / 10 - i * 10;
k = m - 100 * i - 10 * j;
if (m == i*i*i + j*j*j + k*k*k)
printf("%d\n", m);
m++;
}
system("pause");
return 0;
}


  输出结果:

  


  于是,100~999范围内(三位数中)的“水仙花数”得到:153,370,371,407。

  注:此题也可以用for循环来实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: