求劃分因子乘積最大的乙個劃分及此乘積

2022-03-22 19:06:35 字數 812 閱讀 6785

求劃分因子乘積最大的乙個劃分及此乘積

問題簡述:給定乙個正整數n, 則在n所有的劃分中, 求因子乘積最大的乙個劃分及此乘積。例如:8 = , , , , , , 等,那麼在這些當中,3 * 3 * 2 的乘積最大,所以輸出整個劃分

和這個乘積 18。

(1)對於任意大於等於4的正整數m, 存在乙個劃分m = m1+m2, 使 m1*m2 >= m證: 令m1 = int(m/2), 則 m1 >= 2 , m2 = m-m1; 那麼m2 > 2,並且 m2 >= m/2 >= m1; m1*m2 >= 2*m2 >= m; 證畢;

該證明簡單的來說就是:對於乙個大於等於4的正整數m,存在乙個2塊劃分的因子,這兩個因子的乘積總是不小於原數m本身。

(2)由(1)知此數最終可以分解為 2^r * 3^s。現證明 r <= 2;

證:若r > 2, 則至少有3個因子為2, 而2*2*2 < 3*3;

所以可以將3個為2的因子,換為兩個因子3;積更大;證畢。

綜合(1),(2),則有:任何大於4的因子都可以有更好的分解, 而4可以分解為2*2。

所以:此數應該分解為 2^k1 * 3^k2。而且可以證明 k1>=0 並且 k1 <= 2,因此:

a.當n = 3*r 時, 分解為 3^r

b.當n = 3*r+1時, 分解為 3^(r-1)*2*2

c.當n = 3*r+2時, 分解為 3^r*2

**剩下程式設計處理,那就是太簡單了,首先是處理 <= 4的特殊情況,再對》4的情況進行模3的3種情況的判斷,最後一一輸出。可見,數學在整數劃分問題上有太強的功能。誰叫這個問題叫整數劃分呢,不與數學密切才怪! **

求乙個正整數的因子個數

如 整數 15,有1,15,3,5 共4個因子。要求演算法的複雜度為o sqrt n 首先想到的方法是 逐個列舉,從 1 到 n 2 1 當然也可以是 從 1 到 n 這樣演算法的複雜到至少是o n 的,而且,其中還要去重,比如 24 4 6 6 4,這樣還要分配空間來存放找到的因子,並且每次新增的...

求乙個數的因子數及平方數判斷

對於乙個自然數n,都可以分解質因子得到如下形式 怎麼推出來的我也不知道。其中因子數包含自身和1 注意,若要使f n 為奇數,僅有一種可能,就是e1,e2.都為偶數時,總的因子數才為奇數,而若指數都為偶數,說明這個數必定是乙個完全平方數!判斷乙個數是否為平方數 根據數學的等差數列求和公式 由此可知 任...

DP的另乙個角度 數列劃分

有個長度小於40000數列,把它分成若干段,使得各段花費總和最小。一段的花費為該段不同元素的個數 不妨設有x 個,那麼花費為x的平方。看到題目,不難想到動態規劃的做法。設f i 為前i個元素最小的花費,然後列舉最後一段放多少個元素,不妨設為k個,那麼f i min。這當然是可行的,但時間複雜度不容樂...