求劃分因子乘積最大的一個劃分及此乘積
阿新 • • 發佈:2018-05-18
等於 簡單 給定 int 大於 例如 整數劃分 特殊情況 算法 m2 >= 2m2 >= m; 證畢;
該證明簡單的來說就是:對於一個大於等於4的正整數m,存在一個2塊劃分的因子,這兩個因子的乘積總是不小於原數m本身。
(2)由(1)知此數最終可以分解為 2^r 3^s。現證明 r <= 2;
證:若r > 2, 則至少有3個因子為2, 而222 < 33;
所以可以將3個為2的因子,換為兩個因子3;積更大;證畢。
綜合(1),(2),則有:任何大於4的因子都可以有更好的分解, 而4可以分解為22。
所以:此數應該分解為 2^k1 * 3^k2。而且可以證明 k1>=0 並且 k1 <= 2,因此:
A.當n = 3r 時, 分解為 3^r
B.當n = 3r+1時, 分解為 3^(r-1)22
C.當n = 3r+2時, 分解為 3^r2
剩下編程處理,那就是太簡單了,首先是處理 <= 4的特殊情況,再對>4的情況進行模3的3種情況的判斷,最後一一輸出。可見,數學在整數劃分問題上有太強的功能。誰叫這個問題叫整數劃分呢,不與數學密切才怪! ^_^。
求劃分因子乘積最大的一個劃分及此乘積
問題簡述:給定一個正整數n, 則在n所有的劃分中, 求因子乘積最大的一個劃分及此乘積。例如:8 = {8}, {7, 1}, {6, 2}, {5, 3}, {4, 4}, {3, 3, 2}, {2, 2, 2, 2} 等,那麽在這些當中,3 * 3 * 2 的乘積最大,所以輸出整個劃分
和這個乘積 18。
算法分析:這是我在某個論壇上看到的問題,以及別人針對此問題的數學分析,現簡單的整理如下:
(1)對於任意大於等於4的正整數m, 存在一個劃分m = m1+m2, 使 m1m2 >= m證: 令m1 = int(m/2), 則 m1 >= 2 , m2 = m-m1; 那麽m2 > 2,並且 m2 >= m/2 >= m1; m1
該證明簡單的來說就是:對於一個大於等於4的正整數m,存在一個2塊劃分的因子,這兩個因子的乘積總是不小於原數m本身。
(2)由(1)知此數最終可以分解為 2^r 3^s。現證明 r <= 2;
證:若r > 2, 則至少有3個因子為2, 而222 < 33;
所以可以將3個為2的因子,換為兩個因子3;積更大;證畢。
綜合(1),(2),則有:任何大於4的因子都可以有更好的分解, 而4可以分解為22。
所以:此數應該分解為 2^k1 * 3^k2。而且可以證明 k1>=0 並且 k1 <= 2,因此:
B.當n = 3r+1時, 分解為 3^(r-1)22
C.當n = 3r+2時, 分解為 3^r2
剩下編程處理,那就是太簡單了,首先是處理 <= 4的特殊情況,再對>4的情況進行模3的3種情況的判斷,最後一一輸出。可見,數學在整數劃分問題上有太強的功能。誰叫這個問題叫整數劃分呢,不與數學密切才怪! ^_^。
求劃分因子乘積最大的一個劃分及此乘積