一種大整數(shù)算法的計算機(jī)處理裝置的制造方法
【專利摘要】本發(fā)明公開了一種大整數(shù)算法的計算機(jī)處理裝置,包括:整數(shù)寄存單元:用于存儲手工或從文件中輸入的數(shù)據(jù);預(yù)處理單元:用于刪除整數(shù)寄存單元中存儲數(shù)據(jù)的所有空格以及該存儲數(shù)據(jù)前面多余的“0”和判斷該存儲數(shù)據(jù)是不是整數(shù);計算處理單元,用于對預(yù)處理單元處理后的數(shù)據(jù)進(jìn)行計算,得到相應(yīng)的值;結(jié)果處理單元,用于對計算處理單元計算所得的值轉(zhuǎn)換為字符串進(jìn)行輸出;中央控制單元:分別與整數(shù)寄存單元、預(yù)處理單元、計算處理單元、結(jié)果處理單元連接。本發(fā)明采用動態(tài)分配的字符串作為大整數(shù)的存儲結(jié)構(gòu),可以進(jìn)行4000位以上十進(jìn)制整數(shù)的加法、減法、乘法、乘方、開平方、Euclid除法、除法和整除性測試,解決了現(xiàn)有計算機(jī)進(jìn)行大整數(shù)計算時不精確的問題。
【專利說明】
一種大整數(shù)算法的計算機(jī)處理裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機(jī)算法技術(shù)領(lǐng)域,具體為一種大整數(shù)算法的計算機(jī)處理裝置。
【背景技術(shù)】
[0002]在國家軍事、政治、外交、經(jīng)濟(jì)、商業(yè)等領(lǐng)域的信息安全問題中,在計算機(jī)科學(xué)、數(shù)學(xué)等領(lǐng)域的科學(xué)研究中,常常涉及或者必須考察“大”到數(shù)十位甚至上百位十進(jìn)制整數(shù)的有關(guān)計算,有時候甚至要求計算精度達(dá)到小數(shù)點后數(shù)十位甚至上百位(多位小數(shù)的有關(guān)計算都可以化為整數(shù)的有關(guān)計算)。比如我國“兩彈一星”理論設(shè)計和實際試驗中有些數(shù)據(jù)要計算到小數(shù)點后數(shù)十位。又如在軍事信息安全領(lǐng)域中,有的地方要用到RSA、ELGamal或ECDLP密碼算法或數(shù)字簽名算法,這些算法都離不開大整數(shù)的運(yùn)算,甚至涉及有關(guān)大素數(shù)的整數(shù)運(yùn)算,諸如大整數(shù)的加法、乘法、乘法階、乘法逆、最大公約數(shù)、因子分解以及同余等問題,其它密碼算法或數(shù)字簽名算法也會涉及大大整數(shù)的運(yùn)算。再如軍事領(lǐng)域很多地方要用到偽隨機(jī)數(shù),而偽隨機(jī)數(shù)一般是用偽隨機(jī)序列產(chǎn)生或者用同余式計算得到的,這二者都離不開有關(guān)大整數(shù)的計算?,F(xiàn)有的大整數(shù)計算技術(shù)不能完全滿足這些領(lǐng)域的專門需要或者在一定程度上制約著這些領(lǐng)域有關(guān)課題的研究和發(fā)展。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種大整數(shù)算法的計算機(jī)處理裝置,以解決上述【背景技術(shù)】中提出的問題。
[0004]為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種大整數(shù)算法的計算機(jī)處理裝置,包括:
整數(shù)寄存單元:用于存儲手工或從文件中輸入的數(shù)據(jù);
預(yù)處理單元:用于刪除整數(shù)寄存單元中存儲數(shù)據(jù)的所有空格以及該存儲數(shù)據(jù)前面多余的“O”和判斷該存儲數(shù)據(jù)是不是整數(shù);
計算處理單元,用于對預(yù)處理單元處理后的數(shù)據(jù)進(jìn)行計算,得到相應(yīng)的值;
結(jié)果處理單元,用于對計算處理單元計算所得的值轉(zhuǎn)換為字符串進(jìn)行輸出;
中央控制單元:分別與整數(shù)寄存單元、預(yù)處理單元、計算處理單元、結(jié)果處理單元連接,并存儲整數(shù)寄存單元的輸入值,預(yù)處理單元、計算處理單元、結(jié)果處理單元的處理值。
[0005]優(yōu)選的,整數(shù)寄存單元采用動態(tài)分配字符串作為大整數(shù)的存儲結(jié)構(gòu)。
[0006]優(yōu)選的,所述計算處理單元包括基本運(yùn)算模塊、乘方與開方模塊、階乘與因子模塊、素數(shù)模塊、最大公約數(shù)模塊、特殊數(shù)模塊、不定方程模塊、同余式模塊。
[0007]優(yōu)選的,結(jié)果處理單元是用于對其計算結(jié)果的輸出值的整數(shù)部分從后向前每隔一個固定的位數(shù)就插入一個空格,對其計算結(jié)果的輸出值的小數(shù)部分從前向后每隔一個固定的位數(shù)就插入一個空格。
[0008]本發(fā)明采用動態(tài)分配的字符串作為大整數(shù)的存儲結(jié)構(gòu),可以進(jìn)行4000位以上十進(jìn)制整數(shù)的加法、減法、乘法、乘方、開平方、Euclid除法、除法和整除性測試,解決了現(xiàn)有計算機(jī)進(jìn)行大整數(shù)計算時不精確的問題。除法運(yùn)算可精確到小數(shù)點后1023位以上,其中開平方運(yùn)算可精確到小數(shù)點后3000位以上,乘方運(yùn)算可以計算出2的13604次方、3的8583次方、5的5859次方、5的5859次方、7的4846次方等等;可以計算1493以內(nèi)十進(jìn)制正整數(shù)的階乘、4000位以上十進(jìn)制正整數(shù)的階乘因子和最大公約數(shù)、2000位以上十進(jìn)制正整數(shù)的最小公倍數(shù);可以計算參數(shù)在2506以內(nèi)的二項式系數(shù)、參數(shù)在458以內(nèi)的Stirling數(shù)和參數(shù)在1254以內(nèi)的Catalan數(shù);可以計算斐波那契數(shù)到19598項以內(nèi);可以求解系數(shù)在十進(jìn)制2000位以上的二元一次、三元一次不定方程和系數(shù)在十進(jìn)制16位以內(nèi)的一元二次方程;可以計算十進(jìn)制2000位以內(nèi)正整數(shù)的乘法逆,求解系數(shù)在十進(jìn)制2000位以內(nèi)的一次同余方程和方程組;可以成功地對16位以內(nèi)的十進(jìn)制正整數(shù)進(jìn)行素性判定和因子分解。一元二次方程、素性判定和因子分解等問題的計算復(fù)雜性高,速度一般較慢,因此這里對其范圍限制得很小。
【附圖說明】
[0009]圖1為本發(fā)明的結(jié)構(gòu)框圖。
【具體實施方式】
[0010]下面將結(jié)合具體實施例,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0011 ]如圖1所示,一種大整數(shù)算法的計算機(jī)處理裝置,包括:
整數(shù)寄存單元:用于存儲手工或從文件中輸入的數(shù)據(jù);在具體實施例中,整數(shù)寄存單元采用動態(tài)分配字符串作為大整數(shù)的存儲結(jié)構(gòu)。
[0012]預(yù)處理單元:用于刪除整數(shù)寄存單元中存儲數(shù)據(jù)的所有空格以及該存儲數(shù)據(jù)前面多余的“O”和判斷該存儲數(shù)據(jù)是不是整數(shù);
計算處理單元,用于對預(yù)處理單元處理后的數(shù)據(jù)進(jìn)行計算,得到相應(yīng)的值;其中所述計算處理單元包括基本運(yùn)算模塊、乘方與開方模塊、階乘與因子模塊、素數(shù)模塊、最大公約數(shù)模塊、特殊數(shù)模塊、不定方程模塊、同余式模塊。
[0013]結(jié)果處理單元,用于對計算處理單元計算所得的值轉(zhuǎn)換為字符串進(jìn)行輸出;在具體實施例中,結(jié)果處理單元是用于對其計算結(jié)果的輸出值的整數(shù)部分從后向前每隔一個固定的位數(shù)就插入一個空格,對其計算結(jié)果的輸出值的小數(shù)部分從前向后每隔一個固定的位數(shù)就插入一個空格。
[OOM]中央控制單元:分別與整數(shù)寄存單元、預(yù)處理單元、計算處理單元、結(jié)果處理單元連接,并存儲整數(shù)寄存單元的輸入值,預(yù)處理單元、計算處理單元、結(jié)果處理單元的處理值。
[0015]本發(fā)明中,計算處理單元包括基本運(yùn)算模塊、乘方與開方模塊、階乘與因子模塊、素數(shù)模塊、最大公約數(shù)模塊、特殊數(shù)模塊、不定方程模塊、同余式模塊。
[0016]基本運(yùn)算模塊:圓周率的近似值,加法,減法,乘法,除法、Euclid除法,整除性測試。
[0017]乘方與開方模塊:方根化簡,乘方,一個正整數(shù)在另一正整數(shù)中的方次數(shù),平方根。
[0018]階乘與因子模塊:階乘,階乘因子,正整數(shù)的因子分解。
[0019]素數(shù)模塊:最小素因子,素性測試,Euler函數(shù)。
[0020]最大公約數(shù)模塊:最大公約數(shù),最小公倍數(shù)。
[°021 ]特殊數(shù)模塊:二項式系數(shù),斐波那契數(shù),第一模塊Stirl ing數(shù),第二模塊Stirl ing數(shù),Catalan 數(shù)。
[0022]不定方程模塊:二元一次不定方程ax_by = l,二元一次不定方程ax+by = c,三元一次不定方程ax+by+cz = n,勾股數(shù),整系數(shù)二元一次方程。
[0023]同余式模塊:一個正整數(shù)關(guān)于另一個正整數(shù)的乘法階,一個正整數(shù)關(guān)于另一個正整數(shù)的乘法逆,一元一次同余方程,一元一次同余方程組。
[0024]盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同物限定。
【主權(quán)項】
1.一種大整數(shù)算法的計算機(jī)處理裝置,其特征在于,包括: 整數(shù)寄存單元:用于存儲手工或從文件中輸入的數(shù)據(jù); 預(yù)處理單元:用于刪除整數(shù)寄存單元中存儲數(shù)據(jù)的所有空格以及該存儲數(shù)據(jù)前面多余的“O”和判斷該存儲數(shù)據(jù)是不是整數(shù); 計算處理單元,用于對預(yù)處理單元處理后的數(shù)據(jù)進(jìn)行計算,得到相應(yīng)的值; 結(jié)果處理單元,用于對計算處理單元計算所得的值轉(zhuǎn)換為字符串進(jìn)行輸出; 中央控制單元:分別與整數(shù)寄存單元、預(yù)處理單元、計算處理單元、結(jié)果處理單元連接,并存儲整數(shù)寄存單元的輸入值,預(yù)處理單元、計算處理單元、結(jié)果處理單元的處理值。2.根據(jù)權(quán)利要求1所述的一種大整數(shù)算法的計算機(jī)處理裝置,其特征在于:整數(shù)寄存單元采用動態(tài)分配字符串作為大整數(shù)的存儲結(jié)構(gòu)。3.根據(jù)權(quán)利要求1所述的一種大整數(shù)算法的計算機(jī)處理裝置,其特征在于:所述計算處理單元包括基本運(yùn)算模塊、乘方與開方模塊、階乘與因子模塊、素數(shù)模塊、最大公約數(shù)模塊、特殊數(shù)模塊、不定方程模塊、同余式模塊。4.根據(jù)權(quán)利要求1所述的一種大整數(shù)算法的計算機(jī)處理裝置,其特征在于:結(jié)果處理單元是用于對其計算結(jié)果的輸出值的整數(shù)部分從后向前每隔一個固定的位數(shù)就插入一個空格,對其計算結(jié)果的輸出值的小數(shù)部分從前向后每隔一個固定的位數(shù)就插入一個空格。
【文檔編號】G06F7/491GK105892986SQ201610277636
【公開日】2016年8月24日
【申請日】2016年4月30日
【發(fā)明人】王娟
【申請人】安徽碩尼信息科技有限公司