質因子分解

2021-09-19 09:14:00 字數 1076 閱讀 9575

概念:所謂質因子分解是將乙個正整數n寫成乙個或多個質數的乘積形式。

例如:6=2*3,180=2*2*3*3*5,也可以寫成指數形式,例如 180=2^2*3^2*5^1;

你會發現最終會歸結到若干個不同素數(質數)的乘積

注意:由於1本身不是素數,因此它沒有質因子,下面針對大於1的正整數來說。

這裡提供2種質因子分解的**,可根據要求選擇,重點講解方法(二)

方法(一):

方法(二) :指數形式輸出

#include #include const int maxn=100001;

//判斷是否為素數

bool is_prime(int n)

return true;

}int prime[maxn],pnum=0;

//構建素數表

void find_prime()

} } return 0;

}

這裡說明一下(針對方法二):

1)考慮到2*3*5*7*11*13*17*19*23*29就已經超出了int範圍,所以只需要將 f 陣列開到10就可以了。

2)時間複雜度為o(√n)。

核心思路:

對於正整數n來說,如果它存在1和本身之外的因子,那麼一定是在sqrt(n)的左右成對出現(或者就等於sqrt(n)^2)。

推廣到「質因子」上面,會得到乙個強化結論:

情況1.所有質因子≤sqrt(n).

情況2.乙個質因子》sqrt(n),其餘全部≤sqrt(n)。 在上述**中,最後除不盡(不為1)則有且僅有乙個大於sqrt(n)的數。

質分解因數 質因子分解

3 參考 分解因數 時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 所謂因子分解,就是把給定的正整數a,分解成若干個素數的乘積,即 a a1 a2 a3 an,並且 1 a1 a2 a3 an。其中a1 a2 an均為...

質因子分解

今天沒事做,我們來寫個部落格,混混等級!我們以求數的質因子的個數為例來講解。對於質因子分解最簡單最純粹的暴力我相信大家都會的。int getnum int x return ans 但是當處理的資料比較多,而且範圍也比較大的時候顯然這種方式就不再那麼適合了。既然我們是分解質因子,那麼我們就可以先預處...

質因子分解

這個東西會在程式執行結尾提示 press any key to continue 用以結束程式。貴在那裡?讓我們來看看system pause 的流程 1 暫停你的程式 2 在sub process中啟動os 3 尋找要執行的命令並為之分配記憶體 4 等待輸入 5 記憶體 6 結束os 7 繼續你的...