编程论坛's Archiver

wuchuyuan 发表于 2008-4-14 19:37

这是求从100~999的水仙花数的,但为什么输出的结果不正确呢?

这是求从100~999的水仙花数的,但为什么输出的结果不正确呢?

#include<iostream.h>
void main()
{int a,b,c,s,p;
for(s=100;s>=100&&s<=999;s++)
{for(a=1;a<=9;a++)
{for(b=0;b<=9;b++)
{for(c=0;c<=9;c++)
p=a*a*a+b*b*b+c*c*c;
if(s==p)cout<<p<<endl;}}}
}

wuxueyan2008 发表于 2008-4-14 22:42

楼主的算法有问题,看看这个完整的程序,本人亲自编写的。
#include <iostream>
using namespace std;
int main()
{
        int a,b,c;
        for(int i=100;i<1000;i++)
        {
                a=i/100;
                b=(i%100)/10;
                c=i%10;
                if(a*a*a+b*b*b+c*c*c==i)
                        cout<<i<<endl;
        }
        return 0;
               
}

落叶星空 发表于 2008-4-25 23:36

水仙花数是指这个数=这个数的百位的三次方+十位的三次方+各位的三次方

lcsqmx 发表于 2008-4-29 22:33

有点意思!哈哈点

songjianzheng 发表于 2008-5-1 16:42

我没有运行这个程序,但我想运行结果应该是100到999都输出.问题出在:当你确定一个s时,你用0到9*9*9+9*9*9+9*9*9这个数与其比较,所以所有数都满足

songjianzheng 发表于 2008-5-1 16:46

不好意思
疏忽了,由于a*a*a+b*b*b+c*c*c不是连续变化的
所以输出的
应该不是连续的数

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.