求n個數的最小公倍數的最優演算法?

時間 2021-05-30 11:42:19

1樓:

鄙人有個很蠢但比較實用的想法,說來大家聽聽,看看有沒有什麼可以改進的地方。

其實,這個問題的關鍵我們都看得出來,就是如何快速地把每乙個數因式分解,把每個數因式分解後再算出他們的最小公倍數就是輕而易舉的事了,但是呢我想了一會也沒有想到有什麼高階的演算法來快速實現因式分解,剛剛也到網上找了下,基本上都是無限次數的試,直到試出來為止,很顯然這樣會發生不計其數的運算,導致計算效率極其低下。

開篇我不是說有乙個蠢辦法嘛。其實在一開始我就想到了的,只不過這個蠢辦法應該避開了因式分解演算法的設計,好了,不賣關子了,蠢辦法就是利用每個數字的因式分解都具有唯一性的特點,把一定範圍內的(你想多大都可以)n個質數從選取1位到選取n位的全排列都得到,然後每乙個排列都把裡面的元素相乘得到乙個積,這樣就得到了乙個DIY的因式分解表(或者矩陣)。

以此為據,再來對需要因式分解的每乙個數來往DIY的分解表裡查詢相應的乘積對應的質數組合,最後再對這些組合進行簡單的統計處理就可以得到他們的最小公倍數了。

優缺點也很明顯,首先缺點就是由於質數組合肯定很多,在運算得到因數分解表的時候應該會花掉比較多的時間,還有乙個缺點就是當排列組合達到一定數量後,這會占用較多記憶體。

優點也好說了,對於求解大量的足夠多的n個數的最小公倍數問題,這樣將節省很多時間,也就是只有最開始生成因數分解表需要花費一次的時間,後面的第二次三次運算就直接呼叫就好了。

爪機碼字,先說這麼多,我也來嘗試找找有沒有更好的演算法哈,待會用MATLAB測試下了再來更

已知最大公約數和最小公倍數,如何反求原來的兩個數字?

曉正不碰會死星人 設這個數為A和B 最大公約數為a,最小公倍數為b 對A進行分解因式A a c。對B進行分解因式B a d。那麼b a c d。待會兒再跟新,有點兒事情。 格洛公尺 這答案不唯一啊 舉個簡單的例子 已知兩個數最大公約數是7,最小公倍是420不難看出 35,84 28,105 21,1...

從N個陣列中找出出現最多的前K個數?

學學課程stream mining 陳碩 unordered map count for all id count id vector freq for item in count freq.emplace back item.second,item.first partial sort freq,...

請問一下 40 48 60的最小公倍數是怎麼算出240的。(請原諒我很多年沒學過數學了!)?

panda456 首先要明確,什麼是最小公倍數。我舉個例子,4和6 4的倍數有4 8 12 16 20 24 6的倍數有6 12 18 24 它本身也是它的倍數。發現沒有,12既是4的倍數,又是6的倍數。當然,24也是。12和24都是4和6的公倍數。我們為了方便,通常取比較小的數,即12,把它叫做4...