9718 整數因子分解(優先做)

2021-09-28 20:55:47 字數 846 閱讀 7867

9718 整數因子分解(優先做)

時間限制:1000ms 記憶體限制:1000k

提交次數:0 通過次數:0

題型: 程式設計題 語言: g++;gcc;vc

description

大於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共有多少種不同的分解式。

輸入格式

第一行乙個正整數n (1<=n<=1000000)

輸出格式

不同的分解式數目

輸入樣例

12輸出樣例8提示

此題因子講順序的.第乙個因子可能是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)

intmain()

整數因子分解

時間限制 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,每個xi為大於1的因子,即1例如 當n 12時,共有8種不同的分解式 12 12 12 62 12 43 12 34 12 322 12 26 12 232 12 223 對於給定正整數n,計算n共有多少種不同的分解式。此題因子講順序的.第乙個...

整數因子分解

大於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...