求最大公約數演算法(3中方法)
最大公約數定義:兩個不全為0的非負整數m和n的最大公約數記為gcd(m,n),代表能夠整除(即餘數為0)m和n的最大正整數。
一、歐幾里得演算法
第一步:如果n=0,返回m的值作為結果,同時過程結束;否則進入第二步
第二步:m除以n,將餘數賦給r
第三步:將n的值賦給m,將r的值賦給n,返回第一步
演算法 Euclid(m,n)
//使用歐幾里德演算法計算gcd(m,n)
//輸入:兩個不全為0的非負整數m,n
//輸出:m,n的最大公約數
if n=0
return n
while n!=0 do
r←m mod n
m←n
n← r
return n
二、連續整數檢測法
第一步:將min{m,n}的值賦給t
第二步:m除以t,如果餘數為0,進入第三步;否則進入第四步
第三步:n除以t,如果餘數為0,返回t的值作為結果;否則進入第四步
第四步:把t的值減1。返回第二步
演算法:
//使用連續整數檢測法計算gcd(m,n)
//輸入:兩個不全為0的非負整數m,n
//輸出:m,n的最大公約數
if n=0 return n
t=min{m,n}
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
三、中學中計算gcd(m,n)的過程
第一步:找到m的所有質因數
第二步:找到n的所有質因數
第三步:從第一步和第二步求得的質因數分解式中找出所有的公因數(如果p是一個公因數,而且在m和n的質因數分解式分別出現過pm和pn次,那麼應該將p重複min{pm,pn}次)
第四步:將第三步中找到的質因數相乘,其結果作為給定數字的最大公約數