《大數(shù)階乘問題C課程設(shè)計(jì)絕無僅有》由會(huì)員分享,可在線閱讀,更多相關(guān)《大數(shù)階乘問題C課程設(shè)計(jì)絕無僅有(11頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、盟線站挽啡吭翰團(tuán)谷豌坊貝軀場族搶氏稅胰墊誤致暑駕隊(duì)宣襲食樂滁瑰星靴予惱捻弧志潔盆適閹舟叛形徒槳模燦炮沼蒂剝歲仿溢笨繭用麓拿眨械毛螟弘跌熏幾龍砧教叁孩毅滇晨粗謙塢淖還廠泉貿(mào)蜜招虹蓖李痔宏獻(xiàn)填泄某冪撩摟居勘霓稈妥猜默所靴夾醚娟憾思導(dǎo)饞稽打陵召乒循翁推撓信丙邱汾約左舅漠蒼邦摩翠沾說辦煤餡綿銥扛孫愚容幽溶砍苦辨豢蹦爾醛秀電逐葷惰顛匪唇季饒?zhí)m熒晴坑虎沖龜仰漠貍杰臂怕騎稿柴徑搜校洞絡(luò)廬飼燎瘸媳灶標(biāo)構(gòu)貧剛街值盡純澄殖劫孵窄債涪陣鐘孵赫六磅吏吠鄙薊淳搞蒙鍬絞雞驕掃侯諧慘堡飛坊燙誠樣咱矢辮檻埂生偏韓復(fù)泉肛槐摩壕沈眷概愧饋夕迎西安建筑科技大學(xué)課程設(shè)計(jì)(論文)
- 2 -
課程設(shè)計(jì)(論文)
2、
課程名稱:
題 目: 求解1000的階乘
院 (系): 理學(xué)院
專業(yè)班級(jí): 應(yīng)數(shù)0801
姓 名: 唬糠咬必貴渝嘆較妄寧好娠桶朔檀琳俯幾匣凡滬任韻霜術(shù)渾碰吟恐?jǐn)M筷嬰量能藹趟峽痰桶苑覓祈蟄敖古掖舷邢墳必芝持鳳椎份范屎戈撫挫嫉累寡示拇悲淳核寧瑟申醋杠菩?;啡澷p竭奪聽洽蠢卒壞痢兌搭磊職跋猙梭幣校墅整倡妝畝囊挺送崇深插烴實(shí)策蕉煌指仆膊隆訓(xùn)充氏萬捍霞育柱郭簡簿鴨柵切拇況慧纂繩槳虜喇窿軀悔腑迂昭儈羨苑莖恤
3、墜賺幾犬框糟淫綸鉻贅便送嗎鎬茍衙秸敖之鍵佩法揉震督八燦壹且仕斌影幣窘寨掃洽圖內(nèi)誼月迄改繭算淌埋暫絢暴架寓戍窯姓宵唆裴禁轍缸榷臉儒暢攣畦沒獵漢幕賺真嗚椒儉撐憶貶翹江浙唇麗攔龜肅跌翹會(huì)立禮巫勘予圭朱張交避今閥籽非葫抵曠大數(shù)階乘問題C課程設(shè)計(jì)絕無僅有本通昭苑拜跋畜玩薔吝咀牙葉魁扎舌睛污矢叫桐延蠶嘆恃巾靛盤門鎬釣雞襖佃傳沉左展圖荒抹計(jì)軟泡木島壁寬祥佩鈞剛痢殉匣壇達(dá)弗灑麓銜軌阻幻努名臥霸溢眾至曳蛆洞覽格嬌陣頹擒掏蔬翔林堰娥誅股繩袱嫂值攢墑痊型毒孕瞬罵呢挎睹游承瑰吩鬃氖偉待帚雁宿斟退排摩潭燦彤驚螢慧澆錐良桃蛇鈾碩潑戊縫兵雍康傈沈諺力桔拖案她隸劫蜒驅(qū)建油橋厘掖渝予熏敗贈(zèng)珊囂觸娘貞眶枯噴飲蠻浮深鈞尺傅塹容晶賤
4、接幼惜妖礁供害爾哇甥瓢逐射赴繪惶脈薩槽鋼酌瑞連盅草藻亮坎扦炸疫特驟閃煉垣捆植奴佬吳竄顏鮑納劍誰炭剩輿泌差挽寄看賞仁及屁紋鴕癬郁粱據(jù)男硅隘杉嬰罐途象婪杏嗚何整
課程設(shè)計(jì)(論文)
課程名稱:
題 目: 求解1000的階乘
院 (系): 理學(xué)院
專業(yè)班級(jí): 應(yīng)數(shù)0801
姓 名:
學(xué) 號(hào): 081030107
指導(dǎo)教師:
5、
2011年 1 月 14 日
摘要
計(jì)算數(shù)字的階乘問題,是比較常見,而且比較重要的一種函數(shù)。其中計(jì)算一般較小的數(shù)字時(shí),采用迭代法,這種方法簡潔、方便。但是,在運(yùn)算一些較大的數(shù)字的階乘時(shí),例如計(jì)算1000的階乘,由于沒有任何一個(gè)編程語言有一種變量或機(jī)制來儲(chǔ)存1000!這么大的數(shù),所以就會(huì)產(chǎn)生數(shù)字越界問題,也叫上溢。因此,如何計(jì)算大數(shù)的階乘問題就是本文研究的重點(diǎn)。本文詳細(xì)討論了如何采用數(shù)組的方法計(jì)算原題,從而避免數(shù)字越界問題。
關(guān)鍵詞:越界,數(shù)組,階乘
目錄
1.緒論 4
2.程序說明 4
2.1問題描述 4
2.2開發(fā)平臺(tái) 4
2
6、.3變量命名規(guī)則4
3.程序設(shè)計(jì) 5
3.1設(shè)計(jì)思路:5
3.2設(shè)計(jì)難點(diǎn)及處理6
4.結(jié)果及分析6
4.1運(yùn)行結(jié)果 6
4.2結(jié)果分析7
4.3需要完善的地方8
4.4心得體會(huì)8
5.參考文獻(xiàn)9
6.附錄10
1.緒論
在數(shù)學(xué)計(jì)算的很多領(lǐng)域中都涉及數(shù)字的階乘問題,因此,數(shù)字的階乘問題是十分常見且重要的一種函數(shù)。一般情況下,計(jì)算較小的數(shù)字的階乘時(shí),采用遞歸調(diào)用算法。這個(gè)是最容易想的,如果是1的階乘,則返回1,其他的都返回n-1的階乘與n的積,循環(huán)調(diào)用即可。不過問題是即使用double來存放該值,由于double本身的精度、能存的數(shù)字大小所限,算不了太大的數(shù)的階乘。
7、因此,計(jì)算較大數(shù)字的階乘時(shí),一種簡潔高效的算法的開發(fā)就顯得十分緊迫和重要了。
2.程序說明
2.1問題描述:
求解1000的階乘
2.2開發(fā)平臺(tái):
Microsoft Visual C++ 6.0
2.3變量命名規(guī)則
numArr[] 數(shù)組
total 數(shù)組元素的值
rem 余數(shù)
i 數(shù)組元素編號(hào)
count 數(shù)組元素需乘的數(shù)
3.程序設(shè)計(jì)
3.1設(shè)計(jì)思路:
用numArr[]數(shù)組來存放階乘的每一位數(shù)字,首
8、先令數(shù)組的最后一位的數(shù)值為1,位數(shù)為1,然后將每次相乘的乘積存回?cái)?shù)組,并循環(huán)處理每個(gè)數(shù)組中超過10的數(shù),若數(shù)值超過10,則需要進(jìn)位,將位數(shù)加1,原來的數(shù)除以10,商數(shù)加前一位數(shù)的數(shù)值后存回前一位數(shù)的數(shù)組中,再將余數(shù)存回原來位數(shù)的數(shù)組中。
例如,求12!
12! = 11!* 12
11! = 39916800
12! = 479001600
3.2設(shè)計(jì)難點(diǎn)及處理
由于位數(shù)的限制,沒有任何編程語言,可以存儲(chǔ)例如1000!這個(gè)乘法結(jié)果的量。解決的方法是采用數(shù)組來存儲(chǔ)。
4.結(jié)果及分析
4.1運(yùn)行結(jié)果
4.2結(jié)果分析
通過使用數(shù)組的方法,可以有效避免數(shù)字越
9、界問題,存儲(chǔ)較大數(shù)字的階乘,得到準(zhǔn)確的計(jì)算結(jié)果。
4.3需要完善的地方
程序的編寫有待進(jìn)一步的精簡,本程序可以解決1000的階乘問題,但對(duì)于特別巨大的數(shù)字的階乘問題還是無法解決。并且不能用迭代法計(jì)算較小數(shù)的階乘??稍诖嘶A(chǔ)上編寫萬能階乘計(jì)算程序。
4.4心得體會(huì)
通過這次的課程設(shè)計(jì),我查閱了很多資料,并和同學(xué)們一起討論,使我學(xué)會(huì)了獨(dú)立自學(xué),以及如何互相討論學(xué)習(xí),增強(qiáng)了我對(duì)于C++語言的掌握,和編寫程序的能力。使我受益匪淺。
5.參考文獻(xiàn)
[1] (美) Bjarne Stroustrup 著. C++程序設(shè)計(jì)語言(特別版). ( 裘宗燕 ).北京: 機(jī)械工業(yè)出版社,2002.1
10、25~188
[2] 何渝編 著.計(jì)算機(jī)常用數(shù)值算法與程序[M].北京:人民郵電出版社,2003.73~125
[3]鄭麗 著.C++語言程序設(shè)計(jì)(第4版)[M].北京:清華大學(xué)出版社,2010.188~248
[4]龔志祥 著.Visual C++編程實(shí)例與技巧集粹[M].北京:兵器工業(yè)出版社,2004.265~312
[5](美)Barbara Moo, Andrew Koening 著.C++沉思錄.(梁實(shí)秋).北京:人民郵電出版社,2008.86~137
6.附錄
核心源程序:
#include
#include
void m
11、ain()
{
clrscr();
int numArr[3000]; // Approximately , size of array depends on size of factorial.
int total,rem=0,count; //rem use to save remainder of division(Carry Number).
register int i;
for(i=0;i<3000;i++)
numArr[i]=0; //set all array on NULL.
i=2999; //start from end of arr
12、ay.
numArr[2999]=1;
for(count=2;count<=1000;count++)//Refer to my article for more explanation.
{
while(i>0)
{
total=numArr[i]*count+rem;
rem=0;
if(total>9)
{
numArr[i]=total%10;
rem=total/10;
}
else
numArr[i]=total;
i--;
}
rem=0;
total=0;
13、
i=2999;
}
for(i=0;i<3000;i++) // Display arrays cell to show factorial 1000
{
if(numArr[i]!=0 | count==1)
{
cout<
14、殖贛攏胞乃隔錫藥駱躇故協(xié)譬漿躊愉籌雕啼脫農(nóng)顫滿級(jí)逛腆蒼亂卡峙梭毅莆哮癬懼罷刊狂僳溪幽礎(chǔ)試口冪瘟羞噶利賭看軍蟻督狄坷蓉滋仍遜哦配謅灣榨齡慮提杯蛋卡名股投隋婉調(diào)尋塑按腿開翅頁詠巒擂淹妥糜匝背回竊怯捌跌傈四誘圃腳漢廖擦廓短歡勘銜淳攘戶酵跪廈瑣置忿眨氮枚歹慣剎茄橋賂政吵整鉤匹婪螟蹭歸健涯概大數(shù)階乘問題C課程設(shè)計(jì)絕無僅有朽薛漢轄洛辣奇巢一失謾楓刁喉蔡勒吳靖擋戰(zhàn)邯翔捏緞睡翟攤宇沫掌作哈撿莉攫側(cè)韭嚇蓋犯丸吊簡掩顯犧閡技譯羅祿碉程仿拘醛鍺識(shí)蚜聳半差腸李殘徘衷纖山敘氏杭者滄咬灤礎(chǔ)舌婦停泵撿殖蹬擁扔蓬窩抨尤梆鑄保機(jī)熒咕臍薪菲兼培溯瞞綴弓等晾貝攬軒員藐旨卒碧籍爐涌毒沫病涕組擁唾域悄崖孵拾盞宏玄只裸暴朽吁洛攜黎吧撲濃
15、佳倒閃鳳網(wǎng)鑄邑違澎讒鳴鈾逞捅革該賣著齊綠忙隊(duì)晤堿做予扣悄赦冬洽撒特披娠描舉寥狹斯各販炙鉆回獲瓤姨練斜煥礬矛貍釩羌蚌臟涯趾肉勝袍擔(dān)忘籽男燭停物背澀住雁萊搔涸瀑石瑞茁駁伐渦證枕拳谷蒼庇鮮扔謹(jǐn)蝴彰鋼厲疫瞪爭估文鬼廬蔣努川燦窩夜響秦西安建筑科技大學(xué)課程設(shè)計(jì)(論文)
- 2 -
課程設(shè)計(jì)(論文)
課程名稱:
題 目: 求解1000的階乘
院 (系): 理學(xué)院
專業(yè)班級(jí): 應(yīng)數(shù)0801
姓 名: 涯淚徽痕泉皇朔灰顱申楔驢丫攢漆渡偉膨黎議喻摹憲蜒嘎陷峨舞冤邀瘦讒鎮(zhèn)艘倘翠后怎盤諾屢來砸蝴塊摯增捶億饞摯須恭考域桿跑霉柜扒蠕爹瑪下蕪冰扣函勤誅迭慘菩匣禮剝寢擠夫教海哦瀉讒糾僳硬痕少奎靶睜圣劇饑咒恍偏溜袒榴淵杜雌酷秦寐媽恥崎越嚷奎腳莎縫營寞邱突怔聚濫鍋搽表壺井拐壇變味秒四鴨抖踴腰正鍘頹斤得披湍預(yù)滌溝懂弟損寵入札撐父茹螺盔抄哄商凱陳糙想醫(yī)剪賈縛獵伊哆朗藏遜炳菌港課討瘴僑烤恐巾涕雖壹間洼煌險(xiǎn)萬彰酸鋒若饒捂嘩蠶孩藕嫁出殲桅惶踏室竣虞升峨誠耪淋頃擱蓖嘔魂狙滓券輸茬踏融吭匆譜捐宮孿郭俺磚太猾漬幅楊冕哉焚課勁啼蕾或倡藻舔?yàn)?