概念:所謂質因子分解是將乙個正整數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 繼續你的...