分解質因數

2021-10-10 10:32:49 字數 1005 閱讀 6350

分解質因數的演算法,也是codewars裡的題目primes in numbers。codewars裡還要求了輸出形式,我又編了個vec2str函式來實現。

下面程式的功能:

補充注釋:

//分解質因數的演算法,也是codewars裡的題目primes in numbers

//example: n = 86240 should return "(2**5)(5)(7**2)(11)"

//返回值是字串形式,所以要對得到的質因數進行形式上的處理

#include

#include

#include

//pair的標頭檔案

#include

//to_string的標頭檔案

using

namespace std;

vectorint,

int>>

decomposition

(int number)

//把質因數分解出來存入vector

if(count!=0)

//如果前面找到了質因子,就把該因子和重複次數加入vector}if

(number !=1)

/*最後如果剩下的不是1,也就是說最後剩下的也是個質數,

那它就是最後乙個因子,也要把它加入vector,不然就不完整。

這步總是忘,注意*/

vp.emplace_back

(make_pair

(number,1)

);return vp;

}string vec2str

(vectorint,

int>> v)

//把結果轉化為要求的字串形式

//return "(2**5)(5)(7**2)(11)"

return str;

}int

main()

*/system

("pause");

return0;

}

分解質因數

質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...

分解質因數

分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...

分解質因數

大數的質因數分解一直以來是亟需解決的難題。本文從最基本的試除法開始,分解質因數的方法。下面的程式在開頭定義了乙個巨集opt,如果刪掉這個定義,就可以執行最原始的演算法。一 樸素演算法 include include include using namespace std define opt int...