怎麼超快速求兩個超大數的公約數個數比如

時間 2021-05-04 00:34:30

1樓:匿名使用者

這個問題很簡單,分析如下:

1、兩個數的公約數的個數,與這兩個數最大公約數有關。

假設兩個數分別是m、n,最大公約數是x,設m=ax, n=bx那麼a和b最大公約數為1。

2、把最大公約數分解成素數的乘積,假設等於a1,a2,...an共計n個素數的乘積。

3、根據分解出的素數,排列組合原理計算公約數個數,需要考慮重複的素數。

注:可以使用短除法求最大公約數。

2樓:匿名使用者

先求最大公約數,然後對最大公約數分解質因數。

求最大公約數可以輾轉相減或輾轉相除,基本不怎麼需要時間,對大數分解質因數可以做一個一定範圍內的質數表,然後從小到大挨個試,試到不能被繼續分解為止,這個有可能需要的時間略長,超大數大了可能就會慢,最後的結果是所有質因數的(次數+1)的乘積。

求最大公約數的約數個數就是用分解質因數做最快,因為試的次數少,而且最後結果容易計算,比如360=2^4×3^2×5^2,那它的約數個數就是(4+1)*(2+1)*(2+1)=45,840=2*2*2*3*5*7,那它的約數個數就是(3+1)*(1+1)(1+1)(1+1)=32,計算的原理是排列組合。hernak2011應該也是這麼個意思。

3樓:匿名使用者

從演算法來說,就是用大的數減去小的數,然後看能不能同時整除其中兩個數,可以的話就是最大公約數了。

舉例,求50和35的:

1.50-35=15,15不能整除35,繼續;

2.35-15=20,20大於15,繼續;

3.20-15=5,5能同時整除15和20,故5是最大公約數。

**懶得寫了

ps:我好像看錯問題了,不過從效率方面來說這個演算法是最快的

4樓:du小蝦

//求最大公約數

#include

#include

#include

void fun(int x,int arr)}void main()

}if(ar[i]==br[j])

break;

}printf("the max gongyueshu is:%d\n",ar[i]);}

5樓:dzs經典攝影

求w7旗艦版的系統金鑰,請發到[email protected],謝謝!

6樓:匿名使用者

公約數個數還是隻求最大公約數?

EXCEL怎麼樣自動求的兩個或兩個以上號連著出現過多少次

v輕揚 左右連和上下連著都算嗎?計算縱向連續星星號的次數 以c列為例,公式輸入在c23單元格,特意與資料區域隔了一個空白行,因為這個空白行是需要參與公式的引用的。c23單元格的公式為 sum c2 c21 offset c2 c21,1,0 c2 c21 c2 c21 offset c2 c21,1...

excel怎麼找兩個一樣的資料,怎樣快速找出兩個excel表中相同的資料

1.特別製作瞭如圖所示的兩個 在此特意將其中的一個表中的姓名做了部分修改。2.在此需要從sheet3工作表中查詢出已存在於sheet4工作表中姓名相同的記錄。對此在sheet3工作表對應列中輸入以下 if b2 3.然後切換至sheet4工作表中,選擇姓名區域,並按回車鍵。4.在返回sheet3工作...

用Matlab程式設計,已知兩個點的座標,怎麼求直線的方程啊

墨汁諾 k b 2 a 2 b 1 a 1 k是係數 b a 2 k a 1 b是常數。方程 y k x b 設點1 x1,y1 點2 x2,y2 a polyfit x1,x2 y1,y2 1 則方程為y a 1 x a 2 例如 function qiuzhixian varargin 求通過一...