输出所有“水仙花数”高手请进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出所有“水仙花数”高手请进相关的知识,希望对你有一定的参考价值。

所谓“水仙花数”是一个3位十进制数,该数的各位数字立方之和等于该数本身.例如,153是一个水仙花数,因为1*1*1+5*5*5+3*3*3=153

参考技术A 三位的水仙花数共有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: 35875699062250035
17: 21897142587612075
17: 35641594208964132
19: 1517841543307505039
19: 3289582984443187032
19: 4929273885928088826
19: 4498128791164624869
20: 63105425988599693916
21: 449177399146038697307
21: 128468643043731391252
23: 27907865009977052567814
23: 35452590104031691935943
23: 27879694893054074471405
23: 28361281321319229463398
23: 21887696841122916288858
24: 174088005938065293023722
24: 239313664430041569350093
24: 188451485447897896036875
(为环保起见,24位以上的水仙花数略)
理论上,最大的水仙花数不超过34位。
参考技术B void main()
int a,b,c,d;
a=100;
while(a<1000)
b=a/100;
c=a%10;
d=a%100/10;
if(a==b*b*b+c*c*c+d*d*d)
printf("%d\n",a);
a++;

本回答被提问者采纳
参考技术C 你想问什么?

2017华为机试题--水仙花数

等了一个月终于等到华为给安排的实习生在线机试,把自己做的三道题记录了一下,也方便日后复习。这篇是第一题,没有什么特别的难度,经典的水仙花数题。

题目描述:水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:13+53+33=153),要求:输出1000范围内所有水仙花数及水仙花数之和。

输入描述:无

输出描述:1000以内所有水仙花数及总和。

输出例子:

第1个水仙花数:xxx

第2个水仙花数:xxx

第3个水仙花数:xxx

...

水仙花数总和为:xxx

 1 public class Main {
 2     public static boolean judge(int x) {
 3         int cpx = x;
 4         int n = ("" + x).length();
 5         int s = 0;
 6         while(x > 0) {
 7             int y = x % 10;
 8             s += (int)(0.5 + Math.pow(y, n));
 9             x /= 10;
10         }
11         return cpx == s;
12     }
13     public static void main(String[] args) {
14         int cnt = 0, s = 0;
15         for(int i = 100; i <= 1000; i++) {
16             if(judge(i)) {
17                 s += i;
18                 System.out.println("第" + (++cnt) + "个水仙花数:" + i);
19             }
20         }
21         System.out.println("水仙花数总和为:" + s);
22     }
23 }

 

以上是关于输出所有“水仙花数”高手请进的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程输出所有的“水仙花数”。

编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身

C语言怎样编输出所有水仙花数范围100到999

C语言 水仙花数 编程题

水仙花数c语言

输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=1*+5*+3