荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标  题: [合集]3000! 这个是3000的阶乘~~~~~~~~~~
发信站: 荔园晨风BBS站 (2005年05月30日17:17:31 星期一), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sat Apr 16 21:37:40 2005

总共有9131位,每行显示100位

41493596034378540855568670930866121709511191949318099176894676576975585651235319
50086000765217800342
00751846353836171184957508711140459077945534021610683396116210379041991775220626
63390179682805164719
69749596884245772876609710300372611109534024112711883315773881532843892973761302
11063129303744014853
78725446079610290429491049793888120762511625132917004641668962117590203575175488
98065357786891528509
37824699946746991908320935110683638242870635222685443392137751504885881040368188
09099292912497141900
50893899440471535147315453158744150996017426787508746036797411707236874727714398
89206836916185036081
98459718093784453523958505377611086511162363145920886108557450874513945305436213
71189815084719209442
63742032750299963337849440147756714146808242074999147148783596697206389546705899
60178569480263388767
11287106800495082740071712481947638640136919354435412031278660143479254995914353
01206531034066255032
31020738351502195103148673612338739395096551462159349015789949944072311004426924
83814014145548787273
80458560235615832043179459530558306933512468907212461514684853087240312679670891
13548982733475375756
89936517639642478173346251087901574343739892049226709831703393210717634398335244
45760404765654004144
14699479984354554597799386702839428513413188913165695310848513525094006147774047
00733140654179442800
44366919036854692708572717016480115120574524486079687737848036606530091098156390
91294110633715621540
90380013505867162426233390243416662871652122859027456883350489792686936979287837
68948414365738664369
55075473964882256222183380014600761196859217603234808467455216330411738004331144
22592624369055878291
49079738857587845857398286953903023838372658824276543064375177578972150450713618
01730051628424476294
22748575562782876349876719528136891358391882449928474159168313033403219994675208
29148857643458638323
13545205075955912062067273296951386122994658607527317884452449865348164169238844
88906149585093437344
28898148844273218171312725338915345065811438233812058753798086050808897617538828
96252933633750454549
16860026722959122552885458448268665532431301135375481240956123768607800770070793
95418489071494673778
54407528307872988103912945121929864793703451257436445581459757140822705986325165
35290658457112358527
02119334529811055683988098840949803461850780252730387367840421694272379804643042
50045030806637032760
01634192144280570880243085056789210864697745513953911983863616719030027814638013
69324823327715951805
96193069504237836082620570887209297929797429404576877338319877444685544294800321
74105668942371054502
88704196119150727390000316420144742133232938716180295556140046028674004228853898
54650328028428515122
29602879574180162182323609832097144104701253306731489615323678873498455394960439
70503523477662113959
14519270422122231426998692087463520980686224354813376194395131942868113486531562
22817321497648170538
18461553265961875302964786011608722636404439222576019264946109168851510131439455
74398303192557154162
15144246912237051914909786184943615096310993363959456179659339685195860533863117
63241470668422571923
94742531726479559749993283247279807896470753054014194090200609712674753186365525
40321275775785393069
75300565952082074574994718981444537722482078884433351185456015688537081828928952
18300139654376947286
41877666576281538973734015941054368143543734613424469206707008278242364555745088
25566701572427528103
17141640631410681384330924027281318960884813040665226169552825637183862464944295
68885939384672672369
41994755713205460182634257310291153535327288081827730215967870884372934121170845
11580629967697266601
66363527695996902150212210495425956727859318551626844710037443462042200353539120
37383930954206950214
86207390653190910821344334251497896284236198571674773848126097443055036250866354
72073097129808469719
65377227798931602005607250580075124074944481633922143981184927482819786551784785
47749198714138485042
29038395409057084203813727713566770356504108178052069503213623352169274053101534
09217618340788177356
74646749071616600653230438902639786065509005309872435445689315601329942407112295
01545377152105194244
55127953649712148722221937292891598330017423979775925305013188378834948842322225
07318816399438935627
81710287543258879455885774278039071716638125790379814914844552688587162993101451
07332155547732645760
35916184298708323237568837917135073006026738292294687081030751946020376438138677
10733377931258225735
64355345771628040304809257859097472334139329040722398600054482692961103936401275
39539899397420021925
26892862256495927913636954698324731449409429749421320871696366281296384619137811
46092107010330121199
34264941666449130310898493535366401831282683112506578386425906537197010907276429
33053475129733671692
94150478709492417781215349794994497323584451302100297203599935765077305636969505
39990891252004810120
09056963314436817919424796356338910248625077336724939980172345162704885014943834
37358264400534814749
57421328873648479589553843836378275601433377798816126854462406494134416119108952
65332676162766022113
08792116659243794965348380302360642949819855410143115666017395185394260086731985
64586684635442730180
02229260758976719219836752952836515871552188769831799900585312151869103777667688
36542912474198260994
34535671529412823837612115555686210454583810355154404953718470726363218532775486
50181100262133122842
98609261121595730660239320774767428009094626743221388052906430677112769640137359
06251051050623568241
31765153303077535897513456514742416740151747072083910186998999327936491089268792
47397058141528555439
65954222603919059265825637344676406359525838966981511983959886603683753042017990
32818594556941255051
90663028548695333776829846000318080938221300381022143870574611813042519619164059
70456035183121708151
65864735655654053292841174862895708285679230005352584637706128059145203554638993
21278759063496278379
75871352588618213252263577038396202737385324908353680497990085701522483303439525
19734465334299465256
52360967428345505237397339023742618088717992837222853662934392408957629131544421
06573609205481842139
36589386771554284247727510016673435774309363894844456476437718407387437947100786
71510704495546576262
81566137550730763768080600031844296233977808233311359787577136983012817571625671
68328728151193733668
57894371090977485812228681268241223172726811849752078634531074953317082601531594
40253645365524453587
95203474521342924891664450480435535228197772198197186905488417689639878270478206
61269214725486182478
59626434279190274503452994769367997217285165465591799471789067885687278574470084
28972377823476308074
09195129662383464278396538650173246658501921440916946303712655811977007746825620
35198318782913591013
99781730363517376470671438399281029122446084832051898324834885513102553972158318
49316536707322731729
95431750775475634748127320956655431851879586978172491721700865768098908327830838
24043773797445534252
56887128988555131809670124978594542906096273705906599707841727384207216055767890
60565167694565490120
38816577586193923092436298338954985727987452339809049985846748485039950910939883
42104246931136178759
78611803096108774362764990414655167545507613665725914993376114340243762910290384
13588853131259113254
48492258960071848511693901939854346494154837823383025313687759900054437223329014
62568184095998830522
52158532859983399033659541893269668016326589935823466324708032402042979135742575
54985493728961920916
50794671997121439832581553945835125648010889886887056882711222628734035772418424
80323117302733844222
06040156092420795694932049438094024655625303033288241653020380060412884443848841
89129393985971765670
21150161134012116935553586498480294156323827944757631504268573426986311656280093
21645781654104118990
78396210758605145091526528422433647230880469088426412525126584729134059195171754
29115262200222975698
69279591246209643630570521330992164222584376518891936303298512232829508061262005
73565554213183555838
28931813879594096230379277723034442343234156160355859050232447527450263086983141
41253963717544136118
97269158650716722308083435295578401087236027347001118786146233185439431057058483
77047480603500455688
50206027302222563976307389399850249781551826799169941641455403299098131905066543
58156657691529068908
18620413844409145635529124206490171743643047345519137592291495328298815180874007
67334869976953228714
50791584448703980405737673555777873593937891577147956023340708456392314170118392
55523461811977591567
33859559192652706240637342777602158465110353680579633207148969426633585703753058
29676608224208465464
55855666788922262761999026396179263745785165254091875660854385966122194424872042
49600000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
0000000000000000000000000000000


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: jiffies (jiffies), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月16日22:33:18 星期六

可不可以求出N位的来?比如说100000000000000000000000000000000000000000000...!



☆   3  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sun Apr 17 09:24:20 2005

这个要靠你去算了~~~~~~~~~~~~~ 我的计算机拒绝计算-----     ^_^

--
meteor
梦想农庄音乐站
http://192.168.117.111
音乐模式:http://192.168.117.111/music.htm

视频点播现在开通!!!!!!!!!!!!!!!

※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 192.168.117.111]

※ 修改:.bso 於 Apr 17 09:28:01 2005 修改本文.[FROM: 192.168.117.111]

☆   4  ──────────── 我是分割线 ─────────────────☆
发信人: jiffies (jiffies), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月17日09:31:42 星期天

真的要算的话也不是没可能,做出程序来,拿到深超那里去算




☆   5  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sun Apr 17 09:40:43 2005

很难~~~~~~~~~~



☆   6  ──────────── 我是分割线 ─────────────────☆
发信人: jiffies (暂别2星期), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月17日10:18:40 星期天

难在实现一个能存储无限大数字的类



☆   7  ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sun Apr 17 11:37:35 2005

结果自己在计算机里运行知道就行啊,何必放上来呢,搞得乱死了



☆   8  ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飞仙), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月17日15:32:17 星期天


....




☆   9  ──────────── 我是分割线 ─────────────────☆
发信人: Kenko (坎坷), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月17日23:24:35 星期天

经典题目来的



☆  10  ──────────── 我是分割线 ─────────────────☆
发信人: sailingfish (会游泳的鱼), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月18日20:02:26 星期一

谁要?我写给他。就在32位机上运行。我们用的电脑



☆  11  ──────────── 我是分割线 ─────────────────☆
发信人: pizzz (pizza mj), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月18日20:43:53 星期一

写吧。不过要快点的。
^-^


☆  12  ──────────── 我是分割线 ─────────────────☆
发信人: sailingfish (会游泳的鱼), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月18日23:12:21 星期一

以下为程序:
想算多大数的阶乘修改DI即可

#include <stdio.h>
#define DI 10000

void main()
{
    int Data[DI];
    int Digit;
    int i,j,r,k,m;
    int N;

    for(i=1;i<DI+1;i++)
        Data[i]=0;

    Data[0]=1;
    Data[1]=1;
    Digit=1;

    printf("Enter a number what you want to calculus:");
    scanf("%d",&N);

    for(i=1;i<N+1;i++)
    {
        for(j=1;j<Digit+1;j++)
            Data[j]*=i;
        for(j=1;j<Digit+1;j++)
        {
            if(Data[j]>10)
            {
                for(r=1;r<Digit+1;r++)
                {
                    if(Data[Digit]>10)
                        Digit++;
                    Data[r+1]+=Data[r]/10;
                    Data[r]=Data[r]%10;
                }
             }
         }

         if(i==N)
         {
            printf("%d! = ",i);
            for(m=1,k=Digit;k>0;k--,m++)
            {
                printf("%d",Data[k]);
                if(m%80==0)
                    printf("\n");
            }
          }
   }
}

程序缺点:预先分配的存储空间大,不过对现在的主流电脑而言不算什么
         空间分配不够的时候没有出错信息,不过这个可以自己加上去,时间紧就不写
了。



☆  13  ──────────── 我是分割线 ─────────────────☆
发信人: sailingfish (会游泳的鱼), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月18日23:16:36 星期一

C语言不支持大的数组吧



☆  14  ──────────── 我是分割线 ─────────────────☆
发信人: pizzz (pizza mj), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月18日23:26:46 星期一

·_·
555。有没有快点的算法。
用数组和字符串都不会快的


☆  15  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Wed Apr 20 21:46:19 2005

这个算到3000的时候结果不对啊~~~~~~~~~~~~~~~



☆  16  ──────────── 我是分割线 ─────────────────☆
发信人: esheng (隐鵰), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月21日23:26:51 星期四

老大,你怎么做的啊?



☆  17  ──────────── 我是分割线 ─────────────────☆
发信人: pizzz (pizza mj), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月22日14:40:22 星期五

发现用python挺好。
一个循环就好了。速度很快。1w位大概1-2秒



☆  18  ──────────── 我是分割线 ─────────────────☆
发信人: iammercy (iammercy), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sat Apr 23 17:05:00 2005

这个算法很慢啊!!


☆  19  ──────────── 我是分割线 ─────────────────☆
发信人: CDMA (感冒进行时), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: 2005年04月23日19:36:22 星期六

re
有更好的算法的




☆  20  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Sat Apr 23 19:50:05 2005

这个快
#include <stdio.h>

#define STRMAX 2000  /* N 越大  数组越大 , */
#define P 100000     /* N 越大,P越小       */
#define N 3000       /* N                  */
main()
{
long t[STRMAX]={0},a,b,c,g=0,x,e,p=P;

  t[STRMAX-1]=1;
  for (e=1;e<=N;e++)for(x=STRMAX-1;x>=0;c=t[x],c*=e,a=c/p,b=c%p,t[x]=b+g,g=a,x--
);
  while(t[++x]==0);
  printf("%ld",t[x]);
  while(++x<STRMAX)printf("%.5ld",t[x]);
  getche();
  return 0;
}



☆  21  ──────────── 我是分割线 ─────────────────☆
发信人: sagely (株洲), 信区: Program
标  题: Re: 3000! 这个是3000的阶乘~~~~~~~~~~
时  间: Mon Apr 25 20:22:19 2005

这个要用到大数概念的,其实当你运算的时候不是使用10进制而是使用0x10000制的话,那么
计算这个结果也是很快的.就象在RSA算法中,密钥都一般1024位,而签名的过程就是对一串数
字进行1024次方模上模.

--
你可以否认我,但在否认我之前请用事实说服我.

※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 192.168.93.148]

※ 修改:.sagely 於 Apr 25 20:24:42 2005 修改本文.[FROM: 192.168.93.148]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店