求最大公約數演算法 3中方法

2021-04-15 09:45:47 字數 1027 閱讀 1847

最大公約數定義:兩個不全為0的非負整數m和n的最大公約數記為***(m,n),代表能夠整除(即餘數為0)m和n的最大正整數。

一、歐幾里得演算法

第一步:如果n=0,返回m的值作為結果,同時過程結束;否則進入第二步

第二步:m除以n,將餘數賦給r

第三步:將n的值賦給m,將r的值賦給n,返回第一步

演算法 euclid(m,n)

//使用歐幾里德演算法計算***(m,n)

//輸入:兩個不全為0的非負整數m,n

//輸出:m,n的最大公約數

if n=0

return n

while n!=0 do

r←m mod n

m←nn← r

return n

二、連續整數檢測法

第一步:將min的值賦給t

第二步:m除以t,如果餘數為0,進入第三步;否則進入第四步

第三步:n除以t,如果餘數為0,返回t的值作為結果;否則進入第四步

第四步:把t的值減1。返回第二步

演算法://使用連續整數檢測法計算***(m,n)

//輸入:兩個不全為0的非負整數m,n

//輸出:m,n的最大公約數

if n=0 return n

t=min

while t>0 do

if (m mod t)==0

if (n mod t)==0

return t

else t=t-1

else t=t-1

return t

三、中學中計算***(m,n)的過程

第一步:找到m的所有質因數

第二步:找到n的所有質因數

第三步:從第一步和第二步求得的質因數分解式中找出所有的公因數(如果p是乙個公因數,而且在m和n的質因數分解式分別出現過pm

和pn次,那麼應該將p重複min次)

第四步:將第三步中找到的質因數相乘,其結果作為給定數字的最大公約數

求最大公約數方法

從兩個數a和b中的較小數開始逐個減小1,尋找能整除a和b的整數。第乙個找到的整數即整數a和b的最大公約數。int getpublicmaxnum int a,int b 先用小的乙個數除大的乙個數,得第乙個餘數 再用第乙個餘數除小的乙個數,得第二個餘數 又用第二個餘數除第乙個餘數,得第三個餘數 這樣...

最大公約數簡便演算法 最大公約數演算法

1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...

求最大公約數

最新用了三種演算法實現了求最大公約數的演算法,用的c 寫的,最大公約數也是我們生活中常見的問題 1 窮舉法 主要 如下 if a b for i 1 i a i 演算法分析 窮舉法先將a,b兩值比較大小並且互換,再進行與各種數的整除,如果這個數能同時被a,b整除,那麼這個數就為最大公約數,這種演算法...