1 问题及代码
/*
*Copyright (c)2020,优快云学院
*All rights reserved.
*文件名称:main.c
*作 者:李先声
*完成日期:2020年11月21日
*版 本 号:v1.0
*问题描述:【项目2-水仙花数】
对于三位数字,若各位数字立方和等于该数,该数就是水仙花数。。
*/
#include <stdio.h>
int main()
{
int i,m,k,n;
for(n=100;n<1000;n++)
{
//计算n的各i位数立方和
k=n;
m=0;
while(k>0)
{
i=k%10;
m+=i*i*i;
k=k/10;
}
if(m==n)
{
printf("%d为水仙花数\n",m);
}
}
return 0;
}
2 计算结果
3 小结
本题的解答我参考了前面阿姆斯特朗数的算法,并没有用到穷举的思路。用穷举思路的代码如下:
/*
*Copyright (c)2020,优快云学院
*All rights reserved.
*文件名称:main.c
*作 者:李先声
*完成日期:2020年11月21日
*版 本 号:v1.0
*问题描述:【项目2-水仙花数】
对于三位数字,若各位数字立方和等于该数,该数就是水仙花数。。
*/
#include <stdio.h>
int main()
{
int i,j,k,m,n;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
m=i*100+j*10+k;
n=i*i*i+j*j*j+k*k*k;
if(m==n)
{
printf("%d为水仙花数\n",m);
}
}
return 0;
}