最大公因子求法
阿新 • • 發佈:2018-05-27
篩選法 整除 搜索 進行 緩存 拓展 提前 相關 在一起
為方便討論,m=max(m,n) n=min(m,n)
方法1:t=n 判斷t是不是n的因子 判斷t是不是m的因子
優化:只在n的因子中考察t
方法2:n,m作因式分解,提取公共小因子的乘積
相關子問題:篩選法得到質數表
思考,拓展
1.用質數表優化算法
2.算法輸入數量的變化:多個整數求最大公因子
3.m=2x(m/2)成對考察因子
4.提前結束算法:m,n為不相等質數 m,n整除
5.維護每個數的最大公因子
6.算法的組合使用
設想算法
1.維護每個整數的最大因子,對於每個整數,在log時間得到最大因子鏈
100=50(100的最大因子)x2(小因子)
50=25x2
25=5x5
100的最大因子鏈:100 -> 50 -> 25 -> 5
搜索m,n的最大因子鏈,尋找第一個匹配項
100 -> 50(2) ->25(2) -> 5(5)
75 -> 25(3) ->5(5)
最大公因子=公共小因子x匹配大因子
復雜度log(最大因子鏈長度)+log(二分搜索匹配)+log(log數目小因子取公共序列)
原理:緩存最大因子,空間換時間
繼續優化方向:把三個步驟耦合在一起同時進行,減少常數因子
最大公因子求法