水仙花数

水仙花数

①我的程序

#include<iostream>
using namespace std;
int main(void)
{
int s=0;
for(int j=1;j<=9;j++)
for(int k=j;k<=9;k++)
for(int t=k;t<=9;t++)
{
s=j*j*j+k*k*k+t*t*t;
if(s<100) continue;
if(s>999) break;
if(100<=s<=999) printf("%d ",s);

}
return 0;
}

 测试:

 错误:1000以内的水仙花数共有4个,分别为:153、370、371、407。

               重看题目发现水仙花数定义为3位数ABC满足ABC=A*A*A+B*B*B+C*C*C,而写程序时求得的是所有为三个一位数立方的和的三位数。

 改正:先表示出某三位数的百位、十位、个位数,再由条件语句该三位数等于三个位数的立方和,从而求得。

 改正后的程序

#include<iostream>
using namespace std;
int main(void)
{
int a,b,c,d;
for(int i=100;i<1000;i++){
int a=i/100;//百位
int b=(i%100)/10;//十位
int c=i%10;//个位
if(i==a*a*a+b*b*b+c*c*c) printf("%d ",i);
else continue;
}
return 0;
}

测试:

 成功!

原文地址:https://www.cnblogs.com/slay/p/9327859.html