欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種計(jì)算機(jī)處理大整數(shù)的算法

文檔序號(hào):8318928閱讀:511來(lái)源:國(guó)知局
一種計(jì)算機(jī)處理大整數(shù)的算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及大整數(shù)計(jì)算技術(shù),具體涉及一種計(jì)算機(jī)處理大整數(shù)的算法。
【背景技術(shù)】
[0002] 現(xiàn)有程序設(shè)計(jì)語(yǔ)言提供的整數(shù)數(shù)據(jù)類(lèi)型一般最多為8字節(jié)(64位二進(jìn)制整數(shù)),可 表示的非負(fù)整數(shù)范圍為〇~264-1,而264-1 = 18446744073709551615只有20位十進(jìn)制數(shù) 字。所以,針對(duì)更大整數(shù)的處理和計(jì)算問(wèn)題,必須設(shè)計(jì)專(zhuān)門(mén)的軟件來(lái)實(shí)現(xiàn)有關(guān)功能。
[0003] Windows操作系統(tǒng)提供的計(jì)算器可以進(jìn)行32位以?xún)?nèi)十進(jìn)制整數(shù)的運(yùn)算。但是當(dāng)運(yùn) 算結(jié)果超過(guò)十進(jìn)制32位時(shí),只能用科學(xué)計(jì)數(shù)法表示,其小數(shù)部分有效數(shù)字最多為30位,不 能保證得到正確結(jié)果。
[0004] 美國(guó)Wolfram Research公司用C語(yǔ)言開(kāi)發(fā)的數(shù)學(xué)系統(tǒng)軟件Mathematica是一個(gè) 功能強(qiáng)大的計(jì)算機(jī)數(shù)學(xué)系統(tǒng)軟件。它不但可以解決數(shù)學(xué)中的常用的加、減、乘、除、乘方、開(kāi) 方、階乘、Euclid除法等數(shù)值計(jì)算問(wèn)題,而且可以自動(dòng)地完成積分、多項(xiàng)式的因式分解等復(fù) 雜的計(jì)算工作,還可以解決符號(hào)演算問(wèn)題,方便地繪出各種函數(shù)圖形。
[0005] 美國(guó)PTC公司的MathCAD是類(lèi)似于Mathematica的工程軟件,但不如Mathematica 功能強(qiáng)大。它的代數(shù)運(yùn)算模塊可以進(jìn)行整數(shù)的基本四則運(yùn)算和乘方、開(kāi)方,也可以解四次以 下的代數(shù)方程,但能夠處理的整數(shù)范圍不大。
[0006] 另外還有一款Maple軟件也類(lèi)似于MathCAD和Mathematica。
[0007] 這些軟件都沒(méi)有提供Stirling數(shù)、Catalan數(shù)等特殊數(shù)的計(jì)算能力,也不能求解 不定方程和同余方程組,不能計(jì)算一個(gè)正整數(shù)關(guān)于另外一個(gè)正整數(shù)的乘法階和乘法逆。
[0008] 1994年美國(guó)Peter Shor提出了在世界上有重大影響的基于量子計(jì)算的大整數(shù)因 子分解算法。Shor算法成功的關(guān)鍵正是計(jì)算一個(gè)正整數(shù)關(guān)于另外一個(gè)正整數(shù)的乘法階???見(jiàn)美國(guó)等西方國(guó)家也在研宄大數(shù)計(jì)算問(wèn)題,并且在電子計(jì)算條件下也沒(méi)有大的突破。
[0009] 國(guó)內(nèi)未見(jiàn)提供不定方程求解、同余方程組求解和特殊數(shù)計(jì)算等功能且擁有自主知 識(shí)產(chǎn)權(quán)的大整數(shù)計(jì)算技術(shù),國(guó)外相應(yīng)技術(shù)也未完全提供這些功能。
[0010] 在國(guó)家軍事、政治、外交、經(jīng)濟(jì)、商業(yè)等領(lǐng)域的信息安全問(wèn)題中,在計(jì)算機(jī)科學(xué)、數(shù) 學(xué)等領(lǐng)域的科學(xué)研宄中,常常涉及或者必須考察"大"到數(shù)十位甚至上百位十進(jìn)制整數(shù)的有 關(guān)計(jì)算,有時(shí)候甚至要求計(jì)算精度達(dá)到小數(shù)點(diǎn)后數(shù)十位甚至上百位(多位小數(shù)的有關(guān)計(jì)算 都可以化為整數(shù)的有關(guān)計(jì)算)。比如我國(guó)"兩彈一星"理論設(shè)計(jì)和實(shí)際試驗(yàn)中有些數(shù)據(jù)要計(jì) 算到小數(shù)點(diǎn)后數(shù)十位。又如在軍事信息安全領(lǐng)域中,有的地方要用到RSA、ELGamal或E⑶LP 密碼算法或數(shù)字簽名算法,這些算法都離不開(kāi)大整數(shù)的運(yùn)算,甚至涉及有關(guān)大素?cái)?shù)的整數(shù) 運(yùn)算,諸如大整數(shù)的加法、乘法、乘法階、乘法逆、最大公約數(shù)、因子分解以及同余等問(wèn)題,其 它密碼算法或數(shù)字簽名算法也會(huì)涉及大大整數(shù)的運(yùn)算。再如軍事領(lǐng)域很多地方要用到偽隨 機(jī)數(shù),而偽隨機(jī)數(shù)一般是用偽隨機(jī)序列產(chǎn)生或者用同余式計(jì)算得到的,這二者都離不開(kāi)有 關(guān)大整數(shù)的計(jì)算?,F(xiàn)有的大整數(shù)計(jì)算技術(shù)不能完全滿(mǎn)足這些領(lǐng)域的專(zhuān)門(mén)需要或者在一定程 度上制約著這些領(lǐng)域有關(guān)課題的研宄和發(fā)展。
[0011] 故現(xiàn)有技術(shù)亟需發(fā)展和改進(jìn)。

【發(fā)明內(nèi)容】

[0012] 本發(fā)明要解決的技術(shù)問(wèn)題是提供一種能夠基于字符串而處理大整數(shù)的計(jì)算機(jī)算 法。
[0013] 本發(fā)明的技術(shù)解決方案是:
[0014] 一種計(jì)算機(jī)處理大整數(shù)的算法,包括以下步驟:
[0015] Sl :采用手工或從文件中輸入數(shù)據(jù)到計(jì)算機(jī)中存儲(chǔ);
[0016] S2 :通過(guò)預(yù)處理模塊對(duì)Sl中輸入的數(shù)據(jù)進(jìn)行預(yù)處理;
[0017] S3 :對(duì)S2中預(yù)處理后得到的數(shù)據(jù),通過(guò)計(jì)算模塊進(jìn)行計(jì)算;
[0018] S4 :對(duì)S3中計(jì)算得出的結(jié)果通過(guò)結(jié)果處理模塊進(jìn)行處理。
[0019] Sl輸入的數(shù)據(jù)采用動(dòng)態(tài)分配的或者固定長(zhǎng)度的字符串作為大整數(shù)的存儲(chǔ)結(jié)構(gòu); 輸入的數(shù)據(jù)中每一位十進(jìn)制數(shù)字直接用其ASCII碼存儲(chǔ),負(fù)整數(shù)的負(fù)號(hào)寫(xiě)在字符串首 位,非負(fù)整數(shù)不帶負(fù)號(hào)。
[0020] 在面向?qū)ο蠹夹g(shù)編程時(shí),可將Sl中輸入的數(shù)據(jù)單獨(dú)設(shè)計(jì)為數(shù)據(jù)成員。
[0021] 所述預(yù)處理模塊是用來(lái)刪除Sl輸入數(shù)據(jù)中所有的空格和刪除輸入數(shù)據(jù)前面多余 的數(shù)字"〇"以及判斷輸入的數(shù)據(jù)是不是整數(shù)。
[0022] 所述計(jì)算模塊包括基本運(yùn)算模塊、乘方與開(kāi)方模塊、階乘與因子模塊、素?cái)?shù)模塊、 最大公約數(shù)模塊、特殊數(shù)模塊、不定方程模塊、同余式模塊。
[0023] 所述計(jì)算模塊在計(jì)算時(shí)不改變Sl中輸入的數(shù)據(jù)。
[0024] 所述結(jié)果處理模塊是用于對(duì)S3的計(jì)算結(jié)果數(shù)據(jù)的整數(shù)部分從后向前每隔一個(gè)固 定的位數(shù)就插入一個(gè)空格,對(duì)計(jì)算結(jié)果數(shù)據(jù)的小數(shù)部分從前向后每隔一個(gè)固定的位數(shù)就插 入一個(gè)空格。
[0025] 所述S4得到的數(shù)據(jù)長(zhǎng)度應(yīng)大于Sl輸入數(shù)據(jù)長(zhǎng)度的3倍。
[0026] 本發(fā)明的有益效果:
[0027] 本發(fā)明采用動(dòng)態(tài)分配的或者固定長(zhǎng)度的字符串作為大整數(shù)的存儲(chǔ)結(jié)構(gòu),可以進(jìn)行 4000位以上十進(jìn)制整數(shù)的加法、減法、乘法、乘方、開(kāi)平方、Euclid除法、除法和整除性測(cè) 試,除法運(yùn)算可精確到小數(shù)點(diǎn)后1023位以上,其中開(kāi)平方運(yùn)算可精確到小數(shù)點(diǎn)后3000位以 上,乘方運(yùn)算可以計(jì)算出2的13604次方、3的8583次方、5的5859次方、5的5859次方、7 的4846次方等等;可以計(jì)算1493以?xún)?nèi)十進(jìn)制正整數(shù)的階乘、4000位以上十進(jìn)制正整數(shù)的 階乘因子和最大公約數(shù)、2000位以上十進(jìn)制正整數(shù)的最小公倍數(shù);可以計(jì)算參數(shù)在2506以 內(nèi)的二項(xiàng)式系數(shù)、參數(shù)在458以?xún)?nèi)的Stirling數(shù)和參數(shù)在1254以?xún)?nèi)的Catalan數(shù);可以計(jì) 算斐波那契數(shù)到19598項(xiàng)以?xún)?nèi);可以求解系數(shù)在十進(jìn)制2000位以上的二元一次、三元一次 不定方程和系數(shù)在十進(jìn)制16位以?xún)?nèi)的一元二次方程;可以計(jì)算十進(jìn)制2000位以?xún)?nèi)正整數(shù) 的乘法逆,求解系數(shù)在十進(jìn)制2000位以?xún)?nèi)的一次同余方程和方程組;可以成功地對(duì)16位以 內(nèi)的十進(jìn)制正整數(shù)進(jìn)行素性判定和因子分解。一元二次方程、素性判定和因子分解等問(wèn)題 的計(jì)算復(fù)雜性高,速度一般較慢,因此這里對(duì)其范圍限制得很小。
【附圖說(shuō)明】
[0028] 圖1為本發(fā)明步驟方框圖;
[0029] 圖2是本發(fā)明主界面圖;
[0030] 圖3是"基本運(yùn)算"菜單;
[0031] 圖4是"乘方與開(kāi)方"菜單;
[0032] 圖5是"階乘與因子"菜單;
[0033] 圖6是"素?cái)?shù)"菜單;
[0034] 圖7是"最大公約數(shù)"菜單;
[0035] 圖8是"特殊數(shù)"菜單;
[0036] 圖9是"不定方程"菜單;
[0037] 圖10是"同余式"菜單。
[0038] 圖11是一個(gè)111位正整數(shù)與一個(gè)123位正整數(shù)乘法的計(jì)算實(shí)例;
[0039] 圖12是圖11中兩個(gè)整數(shù)除法的計(jì)算實(shí)例,精確到小數(shù)點(diǎn)后1023位;
[0040] 圖13是上述兩個(gè)整數(shù)Euclid除法的計(jì)算實(shí)例;
[0041] 圖14是2的13604次方的計(jì)算實(shí)例,計(jì)算結(jié)果有4096位;
[0042] 圖15是1234567890987654321的因子分解的計(jì)算實(shí)例,分解結(jié)果為 1234567890987654321 = 32X7X19X928163X1111211111 其中 928163 和 1111211111 都 是素?cái)?shù);
[0043] 圖16是30位數(shù)123456789098765432101234567890的平方根的計(jì)算實(shí)例,精確到 小數(shù)點(diǎn)后3000位;
[0044] 圖17是1493 !的計(jì)算實(shí)例,計(jì)算結(jié)果有4093位,末尾有370個(gè)0 ;
[0045] 圖18是14位數(shù)42949672971917的最小素因子的計(jì)算實(shí)例,計(jì)算結(jié)果表明 42949672971917 是一個(gè)素?cái)?shù);
[0046] 圖19是計(jì)算圖11中兩個(gè)整數(shù)最大公約數(shù)的計(jì)算實(shí)例,計(jì)算結(jié)果表明那兩個(gè)數(shù)是 互素的;
[0047] 圖20是計(jì)算圖11中兩個(gè)整數(shù)最小公倍數(shù)的計(jì)算實(shí)例,可以用乘法驗(yàn)證這個(gè)結(jié) 果;
[0048] 圖21是二項(xiàng)式系數(shù)的計(jì)算實(shí)例,計(jì)算結(jié)果有753位;
[0049] 圖22是第19598個(gè)斐波那契數(shù)的計(jì)算實(shí)例,計(jì)算結(jié)果有4096位;
[0050] 圖23是第一類(lèi)Stirling數(shù)s (458, 234)的計(jì)算實(shí)例,計(jì)算結(jié)果有656位;
[0051] 圖24是第二類(lèi)Stirling數(shù)S (458, 234)的計(jì)算實(shí)例,計(jì)算結(jié)果有612位;
[0052] 圖25是Catalan數(shù)h (1254)的計(jì)算實(shí)例,計(jì)算結(jié)果有749位;
[0053] 圖26是求解以圖11中兩個(gè)整數(shù)為系數(shù)、常數(shù)項(xiàng)為1的二元一次不定方程的計(jì)算 實(shí)例;
[0054] 圖27是求解二元一次不定方程
[0055] 42949672971917x+1234567890987654321y = 123456789 的計(jì)算實(shí)例;
[0056] 圖28是求解三元一次不定方程
[0057] 42949672971917x+1234567890987654321y+1111211111z = 123456789 的計(jì)算實(shí) 例;
[0058] 圖29是求解一元二次方程
[0059] 1234567890x2+5432112345x+9876543210 = 0 的計(jì)算實(shí)例;
[0060] 圖30是乘法逆的計(jì)算實(shí)例;
[0061] 圖31是一元一次同余方程的計(jì)算實(shí)例;
[0062] 圖32是一元一次同余方程組的計(jì)算實(shí)例。
【具體實(shí)施方式】 [0063] 實(shí)施例:
[0064] 一種計(jì)算機(jī)處理大整數(shù)的算法,其特征在于,包括以下步驟:
[0065] Sl :采用手工或從文件中輸入數(shù)據(jù)到計(jì)算機(jī)中存儲(chǔ);
[0066] S2 :通過(guò)預(yù)處理模塊對(duì)Sl中輸入的數(shù)據(jù)進(jìn)行預(yù)處理;
[0067] S3 :對(duì)S2中預(yù)處理后得到的數(shù)據(jù),通過(guò)計(jì)算模塊進(jìn)行計(jì)算;
[0068] S4 :對(duì)S3中計(jì)算得出的結(jié)果通過(guò)結(jié)果處理模塊進(jìn)行處理。
[0069] Sl輸入的數(shù)據(jù)采用動(dòng)態(tài)分配的或者固定長(zhǎng)度的字符串作為大整數(shù)的存儲(chǔ)結(jié)構(gòu); 輸入的數(shù)據(jù)中每一位十進(jìn)制數(shù)字直接用其ASCII碼存儲(chǔ),負(fù)整數(shù)的負(fù)號(hào)寫(xiě)在字符串首 位,非負(fù)整數(shù)不帶負(fù)號(hào)。按照以上技術(shù)方案如手寫(xiě)整數(shù)一樣自然,從而回避對(duì)各種編程語(yǔ)言 現(xiàn)有整型數(shù)據(jù)類(lèi)型進(jìn)行擴(kuò)展的困難。
[0070] 在面向?qū)ο蠹夹g(shù)編程時(shí),可將Sl中輸入的數(shù)據(jù)單獨(dú)設(shè)計(jì)為數(shù)據(jù)成員。
[0071] 所述預(yù)處理模塊是用來(lái)刪除Sl輸入數(shù)據(jù)中所有的空格和刪除輸入數(shù)據(jù)前面多余 的數(shù)字"〇"以及判斷輸入的數(shù)據(jù)是不是整數(shù)。
[0072] 1.設(shè)輸入字符串是STR。下面算法刪除STR中的所有空格:
[0073] (1)令字符型指針變量p指向STR[0],字符型指針變量q指向R[0]。
[0074] (2)判斷:若 p[0] ='\0',則令 q[0] ='\0',結(jié)束。
[0075] (3)判斷:若p [0]辛"(空格),則轉(zhuǎn)向第(5)步。
[0
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
泗阳县| 九江县| 商河县| 育儿| 成安县| 达孜县| 称多县| 稻城县| 南华县| 资中县| 佛山市| 青田县| 兴城市| 保德县| 上饶市| 黄平县| 都昌县| 凤山县| 鄂尔多斯市| 信宜市| 乌恰县| 阿克苏市| 九龙坡区| 克东县| 杭锦后旗| 万安县| 巢湖市| 尚志市| 洪洞县| 阿勒泰市| 浪卡子县| 西吉县| 腾冲县| 德兴市| 家居| 合水县| 江口县| 石河子市| 丽水市| 太湖县| 来凤县|