NOI 1 13 22 因子分解 題解 C

2021-10-02 16:23:57 字數 1399 閱讀 3875

今天的題解有關遞迴和質數,儘管作者很討厭遞迴,但還是發現遞迴簡單,還是用了遞迴,此時此刻,作者只想說:我太難了~~

不說了,說多了都是淚啊,請聽題:

noi 1.13.22:因子分解

總時間限制: 1000ms 記憶體限制: 65536kb

描述輸入乙個數,輸出其素因子分解表示式。

輸入

輸入乙個整數n (2 <= n < 100)

輸出

輸出該整數的因子分解表示式。

表示式中各個素數從小到大排列。

如果該整數可以分解出因子a的b次方,當b大於1時,寫做 a^b ;當b等於1時,則直接寫成a。

樣例輸入

樣例輸出

2^2*3 *5//不含空格

首先你可以看到加粗的部分是2<=n<=100,so我們可以列乙個一到一百的質數表,方便使用,可以做乙個.cpp列印質數表。懶得寫的也可以直接使用***列印的質數直接複製進去:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

看看遞迴的偽**吧:

//counter,用作表示幾次冪

void

fill

(int n/*當前數*/

,int num/*用於表示在考慮第幾個質數*/

)else

return;}

if(/*n這個數不能被當前這個質數整除*/

)else

}

知道為什麼num不能+1了吧。

好了,完整**如下:

#include

using

namespace std;

int z[26]

=;int counter;

void

prt(

int num)

else

if(counter ==1)

else

}void

fill

(int n,

int num)

else

return;}

if(n%z[num]!=0

)else

}int

main()

本題的講解到此結束。

質因子分解

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

分解素因子

time limit 1500ms memory limit 10000k 有疑問?點這裡 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包...

質因子分解

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