大於1的正整數 n 都可以分解為 n = x1 * x2 * … * xm, 每個xi為大於1的因子,即1例如:當n=12時,共有8種不同的分解式:
12 = 12
12 = 62
12 = 43
12 = 34
12 = 322
12 = 26
12 = 232
12 = 223
對於給定正整數n,計算n共有多少種不同的分解式。
此題因子講順序的.第乙個因子可能是2~n之間的數.
比如對12而言,第乙個因子可能是2,3,4,6,12.
將第乙個因子為2的分解個數,加上第乙個因子為3的分解個數,…,直至加到第乙個因子為12的分解個數.
而第乙個因子為2的分解個數又是多少呢?是對6去做因子分解的個數(因為12/2=6),遞迴求解!
可用「遞迴」和「備忘錄方法」兩種方法分別求解,並測試一下效率。
遞迴實現整數因子分解的計數。假設對正整數n的因子分解計數為solve(n)。
1)當n=1時,計數加1。
2)當n>1時,對n的每個因子i,計算solve(n/i)。
或者這樣實現也可以:
int solve2(int n)
完整**::
#include using namespace std;
int solve2(int n)
int main()
整數因子分解
時間限制 1000ms 記憶體限制 1000k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 大於1的正整數 n 都可以分解為 n x1 x2 xm,每個xi為大於1的因子,即1 第一行乙個正整數n 1 n 1000000 不同的分解式數目 12 8 此題因子講順序的.第乙個...
整數因子分解
大於1的正整數n可以分解為 n x1 x2 xm.例如,當n 12時,共有8種不同的分解式 12 12 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3 對於給定的正整數n,程式設計計算n共有多少種不同的分解式。輸入資料有多行,給出正整數n...
整數因子分解問題
problem description 大於1的正整數n可以分解為 n x1 x2 xm。例如,當n 12 時,共有8 種不同的分解式 12 12 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3。對於給定的正整數n,計算n共有多少種不同的...