快速求質因子(一定程度上,比輾轉相除好得多)

2021-08-10 20:29:15 字數 495 閱讀 8264

借鑑自我的朋友,而他的qq也是需要輸入他qq號的質因子才能加他的,所以很有趣,我想他討教了求質因子的方法,然後加了他,哈哈。

方法:按正常方法找乙個數的因子,用乙個for迴圈,遍歷到sqrt(num)前,乙個個看能否除的通。

這裡有點不一樣,找到乙個質因子後,num = num/i,減小了num的長度,直接加快了效率。為什麼可以這麼做,因為比如64,2的6次。如果你這樣的話,會直接把64除成1,一次性把2的因子全部消除了。所以這樣的目的就是一次性徹底消除一類因子,大大縮小num長度。只需要在迴圈完後判斷num是不是因子即可,因為你執行的沒有原來長了,所以num可能會被你漏掉。

**:

private static listgetprimefactor(int num) 

}if (num > 1) primefactorlist.add(num);

return primefactorlist;

}

接下來可能要用到質因子,所以應用場景先不寫了。

快速求n的質因子 數論

如何盡快地求出n的質因子呢?我們這裡又涉及兩個好的演算法了 第乙個 用於每次只能求出乙個數的質因子,適用於題目中給的n的個數不是很多,但是n又特別大的 includeint main if n 1 a num n for i 0 i第二個 一次求出1 n的所有數的質因子,適用於題目中給的n個數比較多...

求乙個數的最小素因子外加快速分解質因子

這種方法使用與資料小於1e7,這種適用於分解1到n所有數的質因子,而且列印出來是從小到大排好序的 首先找到每個數的最小質因子,不停的除以最小素因子,只到x 1 如果是分解單個還是根號n複雜度的更好一點 include bits stdc h using namespace std typedef u...

到了一定程度,就是如何書寫需求的時候

最近一段時間沒有寫部落格。今天天氣比較陰,微弱的光,適合整理思路。最近公司會有很多需求,而我的工作就是,把老闆的需求轉化為程式設計師可以看懂的文件。因為和程式設計師接觸多了,就發現,有的時候跟他們溝通也很費勁的,必須一是一,二是二。但是老闆則不這麼認為,他會認為這是很簡單的乙個事情。總說,這很簡單的...