1、 4210818 1741725 9926315 8: 24678050 24678051 88593477 9: 146511208 912985153 472335975 534494836 10: 4679307774 11: 32164049650 40028394225 42678290603 49388550606 32164049651 94204591914 44708635679 82693916578 14: 28116440335967 16: 4338281769391370 4338281769391371 17: 35875699062250035 21897142
2、587612075 19: 3289582984443187032 4929273885928088826 4498128791164624869 20: 63105425988599693916 21: 449177399146038697307 128468643043731391252 23: 27907865009977052567814 35452590104031691935943 27879694893054074471405 21887696841122916288858 24: 174088005938065293023722 188451485447897896036875
3、 (为环保起见,24位以上的水仙花数略) 理论上,最大的水仙花数不超过34位。求取方法(非高精度)以下为在各种编程语言中实现求取水仙花数的方法(非高精度)。PHP “水仙花数”实现代码:?php for($i=100;$iPHP 所有位数 理论输出:/* * 水仙花数 为不小于3位的数字,每位数字的N次幂的和等于该数字.N为该数字的位数 * name daffodilsNum 水仙花数 * param $places 水仙花位数 =3 */ function daffodilsNum($places=3) /set_time_limit(0); /设置脚本超时为不限制,如果提示30秒超时,可以
4、开启本控制 /$begin=microtime(); /脚本开始时间 /定义位数 if(!defined(PLACES) define(,is_numeric($places)?$places:3);if(PLACES=3) $min=pow(10,PLACES-1); /选数范围起始位置 $max=pow(10,PLACES); /选数范围结束位置 /开始选数 for($i=$min,$out=$max;$sum=0; /当前选数下各个幂值的和 $arr=str_split($i); /以字符串方式分割选数 for($j=0;$j$i)/如果当前累加已大于选数,则跳出循环 break;if(
5、$sum=$i)/如果符合定义,将该数字添加到输出队列 $out.=$i./输出队列 echo $out;/echo .(microtime()-$begin); /输出脚本耗时,当脚本开始时间开启时有效 else /$this-error(错误的位数); /提示错误的位数 C 语言的水仙花数实现代码:#include #includeint main (void) long n,p;long c,a,j,s30,i,q;p=0;a=10;scanf(%d,&n);q=n;for (i=1;c10 ;+i) c=n/a;a=a*10;printf(i=%d,a=%d n,i,a);for (j
6、=1;a=10 ;+j) sj=n/(a/10);n=n-sj*(a/10);a=a/10;printf(j=%d,a=%dn,j,a);j999 end.Visual Basic 的FORTRAN 的WRITE(*,30) DO 10 K=100,999 IA=K/100 IB=MOD(K,100)/10 IC=MOD(K,10) IF(K.NE.IA*3+IB*3+IC*3) GOTO 10 WRITE(*,20)K, IA,IB,IC 10 CONTINUE 20 FORMAT(5X,4I4) 30 FORMAT(5X,18HN=I*3+J*3+K*3) STOP END C+ 编译器上
7、的水仙花数实现代码iostreamusing namespace std;int main() int a,q,w,e;for(a=100;a+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是水仙花数endl;return 0;pyhon 中实现的代码for i in range(1,10):for j in range(0,10):for k in range(0,10):if i*100+j*10+k=i*i*i+j*j*j+k*k*k:print i*100+j*10+k Java 中实现的代
8、码public class shuixianhuashu public static void main(String args) for(int i=100; i i+) int a = i/100;int b = i/10%10;int c = i%10;if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)=i) System.out.println(i+C# ASP.N 中的实现代码for (int i = 100; i 1000; i+) int bai = 0;int shi = 0;int ge = 0;int baiyushu = 0;bai = i / 100;baiyushu = i % 100;shi = baiyushu / 10;ge = baiyushu % 10;if (
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1