整數因子分解

2021-10-05 11:31:27 字數 753 閱讀 7465

大於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共有多少種不同的...