積最大的整數分解

來源:互聯網
上載者:User

1.問題描述

    把2010分解為若干個互不相同的正整數之和,使這些互不相同的正整數之積最大。

 

2.設計要點

    進行一般化處理,把指定正整數n分解為若干個互不相同的正整數之和,使這些互不相同的正整數之積最大。

    設使積最大的化零分解中,最小零數為c,最大零數為d。

    ⑴c>1。若c=1,去掉零數1,把1加至最大零數,顯然積會增大。

    ⑵零數按由小到大排列,從c到d的零數序列中,中間的空數(不在零數序列中的數)不能多於1個。

          設序列中有兩個空數x、y,滿足a(i)<x<y<a(j),其中a(i)、a(j)為零數序列中的項(i<j),x=a(i)+1,y=a(j)-1。因a(i)+a(j)=x+y,而

                            a(j)>a(i)+1 => x*y = (a(i)+1)*(a(j)-1) > a(i)*a(j)

          即把a(i)、a(j)兩個零數分別換成x、y後,和不變而積增加,與所設各人最大矛盾。

    ⑶c<4,即c只能取2、3。

          若c=4,此時若5在序列中,把5化為2+3,積增加;若5不在序列中而6在序列中,把4、6化為2、3、5,顯然和不變而積增加;若5、6都不在序列中,與上述⑵矛盾。

          若c>4,把c化為2與c-2,顯然2(c-2)>c,積增加。

    因此,把指定的n轉化為以2或3開始的連續的或至多一個空數的正整數序列,相應的積達最大。

 

3.代碼實現

#include "stdafx.h"<br />#include <math.h> </p><p>// 積最大的整數分解程式設計<br />int main(void)<br />{<br />int a, c, d, h, k, n, s;<br />double t;</p><p>printf("把正整數n分解為若干個互不相同的正數數之和,使積最大。/n");<br />printf("請輸入正整數n:");<br />scanf("%d", &n);</p><p>s = 0; h = 0; a = 1;<br />while (s <= n) {// 此時s-n可能為1,2,...,a<br />a++;<br />s += a;<br />}<br />if (s - n == a) {// n分解為2至a-1的連續序列<br />c = 2;<br />d = a - 1;<br />}<br />else if (s - n == 2) {// n分解為3至a的連續序列<br />c = 3;<br />d = a;<br />}<br />else if (s - n == 1) {// n分解為3至a+1(不含a)<br />c = 3;<br />d = a + 1;<br />h = a;<br />}<br />else {// n分解為2至a(不含s-n)<br />c = 2;<br />d = a;<br />h = s - n;<br />}</p><p>printf("%d分解為:%d--%d", n, c, d);<br />if (h > 0)<br />printf("(不包含其中的數%d)", h);<br />printf("/n其積最大為:");<br />t = 1;<br />for (k = c; k <= d; k++)<br />t *= k;<br />if (h > 0)<br />t /= h;</p><p>printf("%.0f/n", t);</p><p>return 0;<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.