转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
大数阶乘的计算(二)         ★★★★

大数阶乘的计算(二)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1372 更新时间:2009/4/23 16:37:40

http://expert.csdn.net/Expert/topic/3105/3105509.xml?temp=.1253168

与笔者的另一算法(http://www.csdn.net/Develop/read_article.asp?id=28306)相比,采用下面的方法,阶乘的计算速度快了好几倍!

 

Sub calcfactorial(ByVal n As Integer)
Dim XYS() As Integer, x() As Integer, y() As Integer, result() As String, i As Long, j As Long, k As Long, TEMP As Long, stimer As Double
If n < 0 Then Exit Sub
ReDim x(1)
ReDim XYS(1)
x(1) = 1
XYS(1) = 1
k = 1
stimer = Timer
Do While k <= n

TEMP = Len(CStr(k))
ReDim y(1 To TEMP)
For i = 1 To TEMP
y(i) = Val(Mid(k, i, 1))
Next
ReDim XYS(LBound(x) To UBound(x) + UBound(y))
For i = LBound(x) To UBound(x)
For j = 1 To UBound(y)
XYS(i + j) = XYS(i + j) + x(i) * y(j)
Next
Next
For i = UBound(x) + UBound(y) To LBound(x) + 1 Step -1
TEMP = XYS(i) \ 10
XYS(i) = XYS(i) Mod 10
XYS(i - 1) = XYS(i - 1) + TEMP
Next

x = XYS
k = k + 1
Loop

ReDim result(1 To UBound(x))
i = 1

Do While x(i) = 0 ''''消除结果前边的多个“0”
result(i) = ""
i = i + 1
Loop
Do While Not i > UBound(x)
result(i) = x(i)
i = i + 1
Loop
factorial = Join(result, "")
Debug.Print k - 1 & "! : 用时 "; Timer - stimer & " 秒, 结果 " & Len(factorial) & " 位"
''''Debug.Print factorial
Erase x()
Erase y()
Erase XYS()
Erase result()
End Sub

 

Private Sub Command1_Click()
For i = 1 To 10
calcfactorial i * 1000
Next

End Sub

上述过程中,每步的计算结果得到的数组,开始的若干元素总有无效的“0”,导致时间和内存资源的浪费,而且数值越大,无效运算就越多。苦苦思索不得更有效的解决方法,请各位算法高手指教。

输出结果:

100! : 用时 .015625 秒, 结果 158 位
200! : 用时 .047124999997322秒, 结果 375 位
300! : 用时 .172625000006519 秒, 结果 615 位
400! : 用时 .266250000000582 秒, 结果 869 位
500! : 用时 .422749999997905 秒, 结果 1135 位
600! : 用时 .657000000006519 秒, 结果 1409 位
700! : 用时 .891250000000582 秒, 结果 1690 位
800! : 用时 1.1571249999979 秒, 结果 1977 位
900! : 用时 1.48450000000594 秒, 结果 2270 位

1000! : 用时 1.84412500000326 秒, 结果 2568 位
2000! : 用时 9.79700000000594 秒, 结果 5736 位
3000! : 用时 23.703125 秒, 结果 9131 位
4000! : 用时 43.7663750000065 秒, 结果 12674 位
5000! : 用时 72.0003750000033 秒, 结果 16326 位
6000! : 用时 104.15625 秒, 结果 20066 位
7000! : 用时 142.422749999998 秒, 结果 23878 位
8000! : 用时 192.125375000003 秒, 结果 27753 位
9000! : 用时 241.281875000001 秒, 结果 31682 位
10000! : 用时 302.859500000006 秒, 结果 35660 位

 

5000!=422857792660554352220106420023358440539078667462664674884978240218135805270810820069089904787170638753708474665730068544587848606668381273633721089377278763127939036305846216064390447898698223987192970889621161265296832177550039924219683703146907264472878789790404754884162215226671928410969236910449565971736352948400223840381120644820230857671104502306174894755428309761781724040805324809927809328784055486199364548291211876258248802189173977900050213212598043639244626460770511358846595108675470585833924655225589035474435988347383178988034633008458631510209091509935653820010933047965742556741930917055172805200236075085991197635228755907902043369743123506916831211924495971556267407521462198986233088625998302859864857578749445963115286970886710046268423648178989905454690861391613218344174148807186234448114831209490361196546872767755617886828720269104814092456410341835975604276458161513178575901661071782544156980883359372729995603371371200471049437656291142488605335299499642300699972204918120100819059439140675053
265004775533850899097945101551091486907004407119572336026243368132330218709287699196806656569752790422258267841561083376425781032629202687211070274681394351128601502326190649959171897364176378436491219709109840944514895358959103804176941956657834822071749105512752639148381172052604826965162642710094919393332661030104360530459117014557209584714353721948246686793467375904872268133410207860903657108806376616249749507413107077401682180585945526445171409277469230062697511346044174567946735828782261629584248675157379172942724178783105429858245117575511884506574424827574660800238588378492396247368761507015767725898321128632295537044902516387925127590841791744640466913531047347984464996154595542013996317357476301740036796192919942190762895445656261767041799538161133387312823511534152581309087915883638351664797225912944270653557142511737323807232632958121797916679692329687096923901003255574789055099807487061047230646195984955239657612208673866514171699307557691897902675157342075864796345338446835085965490727326321910
504064289713096224505162064669468098869917122127404504020684923266241760132910227866687270305284709452526825496617772499645206699836925910690894082637401043498371591126455822280606361394115344316771769934353664284928294436414769615881993661388255577487709937004594753907845149034434521174560594039916268444697661821387470705325559577933196460996662145377564935474169708562389214773222865507182490430016186142192760452307670621142961767274704123616107220009743758647492753665149532164780849075146330071016691313420662882562618283865836983632108760710427516073348347788414796732427080410860761841281888307115098982135338406610652147087046874760995427473673509451553599769040367353385551052571682650317682405743993414862392331981432579182193321898940450865013610998098383993110996355981328001049731588596312131853801205046787642910669365600437305633431984879048998524701293300789344532868156679762880495532846386020133480265279836946393384995675049993707814746561543438930431384237878981847802886009971088695632988347711863122
382785963653115132377931373647397429369411499028751972227999545182615488298951151926682112451355318472209990435355949887299922035062039816011086376236539782172380237846650673624510635034423187315338308212043804710999419227821039747552717416043890169723961305549371844836119803565896062025009093664399360172007383613354405094329072476518909502507724675841989412224659392163116352038147362479528539732089309533421910635702805576629720156556510767780805933453631121829561792887673002802450932122778852968418208261778476955644980385691275787372678040959158711733971103165232678060798127609246173504120182666874262805385275843979167609007743380748420751185119102921960339376280986753665085212869255321536787932521882574101866137054328973735862725370178558806639851350386944039604928258820180419178073649693885802597758398892014389747165465973510852605706234402069637065660129535734043582961473427275805630839510667375349259659518575646939723218275780003250593895303820539697558870511543073920827422440516299708739599768461206246
629098112368012579891284802505094028916959765079395437191311379314427405135599630375642214527294341797246187597964074239147838993541565834716156858499036773056611353833367087548900413091981676330749041510337597307246885839246941715548295730750618505881581959528992660225626903439573313450666972952115230668696227920947779974336574472673471408928071411283888082693377378077293104110767513639476200610858040596019639058015761002337463869352228385801434957178125581445862930042479404065736859862007914604590255413929950088044710384758990326548097338166940500085452723713571394902463820308668541802838317527668064278489561005755859991718966786449154063570014497194249878920859731254275567514575206399118150736397483102490793841725653421894276769116598153430084637087769510295415136551734675054015239706042571746001089968440498845985477977905031632568489156557231006499726498721480800181770357701502983008879487243887718884416833034708723239505377642232944095773219137582371673924704216723002256883135779230394688900662466182532
658490724406767024939579697217467485562998183149665611743997680482094166257463879660305171274925119226367615337524381656217330771650129520988754856467131862602387619964334867961514408328902061082833180891221325853682856469916007952105166960451695430614212305743006877217407155473217957577017595967640563812729153867513698712395570542350999228605975469962186195531354132139126436676900465429996811680550737866770665988027062972502001882845886145344368771455361304414465613369092862748276981946836480550952968681758714859972973082332924094777085275279923304892719633314751563311192746150389219290616780607901383451137066300684376267199885515143681266137319912103235469786756421210624899005553564022924345831264231038363416781719908354140411717740185950606674198348143345444247191436828225654380047860390575922417071802670646875454211626958746795398540784464654140381751149965273621123540880166990280149033225139460832668170930713868826549977374286127789417784752681328371818759103642140881783220739808059714203285309721443041
845459183002833408705783138284973283761286182927136745161897366207237396132790944984014154408304074405393067540767126182547597130843470311389815695365971788564022750674237400323621850094765267521941901241387478279883426470873616812485384444012772521050072279315853096279121131160167772077952572613800240684421885453537121341902236379684012385255288607189967725694227433323948595075570839061877450159652184414998155476107548008054192318436948191732631430603548399790783307267636729090980772827355854348032260067472537097785464567761181807367424367391769863758072145859791485033700592994963793369100283444558089838054017635403737133019311293080958287612107380374800660269767842888358265737486556785868822015143046249655995760379768685318192365806469199584071845493606922169776137542662239658644989770921478134709127917460871630220821981434654245065731262683089579031012893360788644107230184805400373136014216229159146992019884148290014414312800903102107833305090238435726779416177246873411503598700003151092815700331081727415
6246804329772050704504566838986263017029893011453644774168567325123303764778817490360525726055206843706161165397551325413693038677832672082273236642492064323630892687688266509396918616832717397574795529932424061869924203637819294853680980352563310924482152692762191162591458863936770346534803678871261333671169682264509

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台