这是求从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;}}}
} 楼主的算法有问题,看看这个完整的程序,本人亲自编写的。
#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;
} 水仙花数是指这个数=这个数的百位的三次方+十位的三次方+各位的三次方 有点意思!哈哈点 我没有运行这个程序,但我想运行结果应该是100到999都输出.问题出在:当你确定一个s时,你用0到9*9*9+9*9*9+9*9*9这个数与其比较,所以所有数都满足 不好意思
疏忽了,由于a*a*a+b*b*b+c*c*c不是连续变化的
所以输出的
应该不是连续的数
页:
[1]
