编程求100到999的水仙花数个数(编程求100到999之间的水仙花数)
输出100到999间的所有水仙花数,如何编写代码
public class ShuiXianShu
{
/**
* 题目:打印出100-999之间所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
* 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。*
*/
public static void main(String[] args)
{
for(int i=100;i=999;i++)
{
int geWei,shiWei,baiWei;
baiWei=i/100;
shiWei=(i-baiWei*100)/10;
geWei=i-baiWei*100-shiWei*10;
if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei)
{
System.out.println(i);
}
}
}
}
这个是我以前做过的,楼主可以参考
C语言怎样编输出所有水仙花数范围100到999
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。判断一个数是否为水仙花数需要拆分数位,求幂再相加。不过这道题限定了范围,都是三位数,所以可以使用3重循环分别代表3个数位,这样就省去了拆分的麻烦。
代码如下:
#include stdio.h
int main()
{
int i, j, k, sum;
sum = 0;
for (i = 1; i 10; i++)
for (j = 0; j 10; j++)
for (k = 0; k 10; k++)
if ((i*i*i + j*j*j + k*k*k) == (i*100 + j*10 + k))
printf("%d\n", i*100 + j*10 + k);
return 0;
}
7.编程打印出100~999间所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。
第一种方式分离每位数字:
#includestdio.h
int main()
{
int a,b,c;
int i;
for(i=100;i1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i);
}
}
return 0 ;
}
第二种方式:三重for循环
#includestdio.h
int main()
{
int a,b,c;
int i,j,k;
for(i=1;i=9;i++)
{
for(j=0;j=9;j++)
{
for(k=0;k=9;k++)
{
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
{
printf("%d%d%d\n",i,j,k);
}
}
}
}
printf("\n");
return 0 ;
}
扩展资料:
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
常见水仙花数
水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477
……
使用高精度计算,可以得到超过int类型上限的水仙花数:
5: 93084
5: 92727
5: 54748
6: 548834
7: 9800817
7: 4210818
7: 1741725
7: 9926315
8: 24678050
8: 24678051
8: 88593477
9: 146511208
9: 912985153
9: 472335975
9: 534494836
10: 4679307774
11: 32164049650
11:40028394225
11: 42678290603
11: 49388550606
11: 32164049651
11: 94204591914
11: 44708635679
11: 82693916578
14: 28116440335967
16: 4338281769391370
16: 4338281769391371
17: 21897142587612075
17: 35641594208964132
17: 35875699062250035
19: 1517841543307505039
19: 3289582984443187032
19: 4929273885928088826
19: 4498128791164624869
20: 63105425988599693916
21: 449177399146038697307
21: 128468643043731391252
23: 27907865009977052567814
23: 35452590104031691935943
23: 27879694893054074471405
23: 21887696841122916288858
24: 174088005938065293023722
24: 188451485447897896036875
(为环保起见,24位以上的水仙花数略)
最大的水仙花数有39位。十进制自然数中的所有水仙花数共有88个。

C语言编写100到999的水仙花数
水仙花数的定义是这样的:一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
这种方法和解一元三次方程一样,套进去很好理解
a=sum/100 是计算百位的数字 ,如553 ,a=553/100=5;
b=sum/10-a*10; 是计算十位的数字,如553 , b=553/10-5*10=5 ;
c=sum-a*100-b*10 是计算个位的数字 如553 ,c=553-5*10-5*10=3;
c语言编写求水仙数,从100到999之间的。用fun函数
源程序如下:
#includestdio.h
int fun(int n)
{ int i,j,k,m;
m=n;
k=0;
for(i=1;i4;i++)
{ j=m%10;
m=(m-j)/10;
k=k+j*j*j;
}
if(k==n)
return 1;
else
return(0);
}
void main()
{ int i;
for(i=100;i1000;i++)
if(fun(i)==1)
printf("%d is ok!\n" ,i);
}
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)