编程 求水仙花数
若水仙花数是一个三位数,它的各位数字的平方之和等于该数,如153=1^3+5^3+3^3.请设计一个算法,找出100到999中所有的水仙花数...
若水仙花数是一个三位数,它的各位数字的平方之和等于该数,如153=1^3+5^3+3^3.请设计一个算法,找出100到999中所有的水仙花数
展开
5个回答
展开全部
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
C语言代码
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<10000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(n==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
3. C++代码
#include<iostream>
using namespace std;
int f(int x)
{int y=1;
for(int i=1;i<=3;i++)
y=y*x;
return y;}
int main()
{
for(int i=100;i<=999;i++)
{if(f(i%10)+f(i/10%10)+f(i/100%10)==i)
cout<<i<<endl;}
return 0;
}
展开全部
C语言的"水仙花数"实现代码:
#include
<stdio.h>
int
main(void)
{
int
a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
return
0;
}
Java
语言的"水仙花数"实现代码
public
class
shuixianhua
{
public
static
void
main(String[]
args){
for(int
i=1;
i<=9;
i++)
for(int
j=0;
j<=9;
j++)
for(int
k=0;
k<=9;
k++)
if(i*i*i+j*j*j+k*k*k
==
100*i+10*j+k)
System.out.print(i*100+j*10+k+"
");
}
}
C++编译器上的"水仙花数"实现代码
#include<iostream>
using
namespace
std;
void
main()
{
int
a=100;
int
q,w,e;
for(a;a<1000;++a)
{
q=a/100;
w=(a-q*100)/10;
e=(a-q*100-w*10);
if(a==q*q*q+w*w*w+e*e*e)
cout<<a<<"是水仙花数"<<endl;}
}
#include
<stdio.h>
int
main(void)
{
int
a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
return
0;
}
Java
语言的"水仙花数"实现代码
public
class
shuixianhua
{
public
static
void
main(String[]
args){
for(int
i=1;
i<=9;
i++)
for(int
j=0;
j<=9;
j++)
for(int
k=0;
k<=9;
k++)
if(i*i*i+j*j*j+k*k*k
==
100*i+10*j+k)
System.out.print(i*100+j*10+k+"
");
}
}
C++编译器上的"水仙花数"实现代码
#include<iostream>
using
namespace
std;
void
main()
{
int
a=100;
int
q,w,e;
for(a;a<1000;++a)
{
q=a/100;
w=(a-q*100)/10;
e=(a-q*100-w*10);
if(a==q*q*q+w*w*w+e*e*e)
cout<<a<<"是水仙花数"<<endl;}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你用c的格式写一下:
#include"stdio.h"
#include"stdlib.h"
int main()
{
int i,sum,t,b;
for (i=1;i<=10000;i++)
{
sum=0;
b=i;
while(b!=0){
t=b%10;
sum=sum+t*t*t;
b=b/10;}
if(sum==i)
printf("%d ",i);
}
return 0;
} }
#include"stdio.h"
#include"stdlib.h"
int main()
{
int i,sum,t,b;
for (i=1;i<=10000;i++)
{
sum=0;
b=i;
while(b!=0){
t=b%10;
sum=sum+t*t*t;
b=b/10;}
if(sum==i)
printf("%d ",i);
}
return 0;
} }
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
水仙花数是指一多位数,其各个数之立方和等于该数本身
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//判断一个三位数是否为水仙花数
bool isNarcissusNum(long n)
{
bool flag = false;
float ge = 0;
float shi = 0;
float bai = 0;
float sum = 0;
ge = n % 10;
bai = n / 100;
shi = (n % 100 - ge) / 10;
sum = pow(ge,3) + pow(shi,3) + pow(bai,3);
if(sum == n)
flag = true;
return flag;
}
//调用
for(int i=100;i<1000;i++)
{
if(isNarcissusNum(i)==true)
cout<<i<<" "; //输出水仙花数
}
bool isNarcissusNum(long n)
{
bool flag = false;
float ge = 0;
float shi = 0;
float bai = 0;
float sum = 0;
ge = n % 10;
bai = n / 100;
shi = (n % 100 - ge) / 10;
sum = pow(ge,3) + pow(shi,3) + pow(bai,3);
if(sum == n)
flag = true;
return flag;
}
//调用
for(int i=100;i<1000;i++)
{
if(isNarcissusNum(i)==true)
cout<<i<<" "; //输出水仙花数
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询