最大公約數與最小公倍數

一、兩個數的最大公約數和最小公倍數

1.常規求解

 

求兩個數的最小公倍數lcm(int m, int n)可以直接通過,m * n / gcd(m, n)得出

 

 

 

 

2.歐幾里德算法

3.Stein算法

 

(參考百度文庫http://baike.baidu.com/view/47637.htm#5

背景:

    現在的硬件平臺,一般整數最多也就是64位,對於這樣的整數,計算兩個數之間的模是很簡單的。對於字長爲32位的平臺,計算兩個不超過32位的整數的模,只需要一個指令週期,而計算64位以下的整數模,也不過幾個週期而已。但是對於更大的素數,這樣的計算過程就不得不由用戶來設計,爲了計算兩個超過64位的整數的模,用戶也許不得不採用類似於多位數除法手算過程中的試商法,這個過程不但複雜,而且消耗了很多CPU時間。對於現代密碼算法,要求計算128位以上的素數的情況比比皆是,設計這樣的程序迫切希望能夠拋棄除法和取模。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章