今天的題解有關遞迴和質數,儘管作者很討厭遞迴,但還是發現遞迴簡單,還是用了遞迴,此時此刻,作者只想說:我太難了~~
不說了,說多了都是淚啊,請聽題:
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 繼續你的...