最大公約數:指兩個或多個整數公有約數中最大的乙個
最小公倍數:兩個或多個整數公有的倍數叫做它們的公倍數,其中除0以外最小的乙個公倍數就叫做這幾個整數的最小公倍數
二者關係:兩個數之積=最小公倍數*最大公約數
方法1:輾轉相除法
a=int(input('please enter 1st num:'))
b=int(input('
please enter 2nd num:'))
s=a*b
while a%b!=0:
a,b=b,(a%b)
else
:
print(b,'
is the maximum common divisor')
print(s//b,'
is the least common multiple')
#執行結果
please enter 1st num:10please enter 2nd num:15
5 is
the maximum common divisor
30 is the least common multiple
方法2:更相減損法
a=int(input('please enter 1st num:'))
b=int(input('
please enter 2nd num:'))
s=a*b
while a!=b:
if a>b:
a-=b
elif ab-=a
else
:
print(a,'
is the maximum common divisor')
print(s//a,'
is the least common multiple')
#執行結果
please enter 1st num:40please enter 2nd num:60
20 is
the maximum common divisor
120 is the least common multiple
(1)都是求最大公因數的方法,計算上輾轉相除法以除法為主,更相減損術以減法為主,計算次數上輾轉相除法計算次數相對較少,特別當兩個數字大小區別較大時計算次數的區別較明顯。
(2)從結果體現形式來看,輾轉相除法體現結果是以相除餘數為0則得到,而更相減損術則以減數與差相等而得到。
參考部落格:
求最大公約數
最新用了三種演算法實現了求最大公約數的演算法,用的c 寫的,最大公約數也是我們生活中常見的問題 1 窮舉法 主要 如下 if a b for i 1 i a i 演算法分析 窮舉法先將a,b兩值比較大小並且互換,再進行與各種數的整除,如果這個數能同時被a,b整除,那麼這個數就為最大公約數,這種演算法...
求最大公約數
暴力列舉法很簡單,從較小整數的一班開始,試圖找到乙個合適的整數i,檢查這個整數i是否被a和b同時整除 暴力列舉法求最大公約數 param a param b return public static int getgreatestcommondivisor v1 int a,int b for in...
求最大公約數
1.輾轉相除法 a.具體思路 兩個正整數a和b a b 它們的最大公約數等於a除以b的餘數c和b之間的最大公約數。比如10和25,25除以10商2餘5,那麼10和25的最大公約數,等同於10和5的最大公約數。有點類似動態規劃的思想,逐步減小問題規模,最後求到問題的解。int test1 int a,...