C语言求水仙花数,但是不能用100*a+10*b+c==a*a*a+b*b*b+c*c*c,这种方法,怎么做啊,想半天了,还是不会啊

求高手指点下... 求高手指点下 展开
 我来答
zghmzcb
2012-07-11 · TA获得超过276个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:185万
展开全部
你的想法是可行的,但是算法不好,按你的思路形成的完整代码如下:
#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a<10;a++)
{
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
d = 100*a+10*b+c;
if(d==a*a*a+b*b*b+c*c*c)
{
if(d>=100)
printf("%d\n",a*100+b*10+c);
}
}
}
}
}
运行结果是
153
370
371
407
希望能帮到你i
追问
这个我也知道,老师说让弄另外一个算法,而且还说不只是三位数,所以很纠结,不过还是要谢谢你
追答
这个可以计算5位数以内的的水仙花数,通过修改MAX的值还可以计算6位、7位、8位。。。
#include
#include
#define MAX 100000
void main()
{
int i,j,counter=0,sum=0;
int buffer[20];
for(i=100;i0;j/=10)
{
buffer[counter++] = j%10;
}
for(j=0;j<counter;j++)
{
sum+=pow(buffer[j],counter);
}
if(i==sum)
{
printf("水仙花数为:%d\n",i);
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式