分解因數 遞迴

2021-09-25 04:47:03 字數 942 閱讀 5708

給出乙個正整數 aaa,要求分解成若干個正整數的乘積,即 a=a1×a2×a3×...×ana = a_1 \times a_2 \times a_3 \times ... \times a_na=a1​×a2​×a3​×...×an​,並且 1輸入格式

第 111 行是測試資料的組數 n(1≤n≤10)n(1 \le n \le 10)n(1≤n≤10),後面跟著 nnn 行輸入。每組測試資料佔 111 行,包括乙個正整數 a(1輸出格式

nnn 行,每行輸出對應乙個輸入。輸出應是乙個正整數,指明滿足要求的分解的方案種數。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入複製

2

220

樣例輸出複製

1

4

【分析】給乙個數,求它的因式分解個數(加上數本身)。

比如12 = 2 * 6 = 2 * 2 * 3 = 3 * 4 = 12;答案為4;

16 = 2 * 8 = 2 * 2 * 4 = 2 * 2 * 2 * 2 = 4 * 4 = 16;答案為5;

即f(n) = 1 + f(div1, n / div1) + 1 + f(div2, n / div2) + ... + 1 + f(divm, n / divm) 。// div 始終小與 (n / div)

其中div 為 n 的因子, f(div, n / div) 為 n / div 的因式分解個數, n / div 分解因子不得小於 div。

故遞迴從2開始,到 n 結束。

#include int sum; 

void divisor(int a, int b)

if (i > b / i) return; }}

int main()

return 0;

}

分解因數 遞迴

描述給出乙個正整數a,要求分解成若干個正整數的乘積,即a a1 a2 a3 an,並且1 a1 a2 a3 an,問這樣的分解的種數有多少。注意到a a也是一種分解。輸入第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括乙個正整數a 1 a 32768 輸出n行,每行輸出對應乙個輸...

遞迴分解因數

題目 總時間限制 1000ms 記憶體限制 65536kb 描述給出乙個正整數a,要求分解成若干個正整數的乘積,即a a1 a2 a3 an,並且1 a1 a2 a3 an,問這樣的分解的種數有多少。注意到a a也是一種分解。輸入第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括乙...

百練 分解因數(遞迴)

總時間限制 1000ms 記憶體限制 65536kb 描述 給出乙個正整數a,要求分解成若干個正整數的乘積,即a a1 a2 a3 an,並且1 a1 a2 a3 an,問這樣的分解的種數有多少。注意到a a也是一種分解。輸入第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括乙個正...