Algorithm Gossp (18) 最大公因數、最小公倍數、因式分解

前言

This Series aritcles are all based on the book 《經典算法大全》; 對於該書的所有案例進行一個探究和拓展,並且用python和C++進行實現; 目的是熟悉常用算法過程中的技巧和邏輯拓展。

提出問題

Algorithm Gossi:p 最大公因數、最小公倍數、因式分解

說明

關於數論基礎的最大公因數和最小公倍數這裏不加贅述,可以查看算法導論的推導。

簡單說明

其本質上基礎理論是任何一個整數都能分解爲質數的冪的乘積, 這裏有兩個特性
- 1, 輾轉相除法 (A, B) = (B, r ) 其中 A,B的最大公約數就是B和A,B相處餘數的最大公約數
- 2, 最大公約數 * 最大公倍數 = A*B

分析和解釋

代碼

python 求最大公約數

def GCD(m,n):
    if n==0:
        return m
    return GCD(n, m%n)

python 求最小公倍數

def LCM(m,n):
    return m*n / (GCM(m,n))

拓展和關聯

數論裏面有很多可以縮減計算的方法, 有興趣的可以看看。

後記

參考書籍

  • 《經典算法大全》
  • 維基百科
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章