设n是一个正整数,现在要求将n分解为若干个互不相同的自然数的和,使这些自然数的乘积最大。
输入 10
输出 30
#include<stdio.h>
int main(){
int n;
printf("请输入n的值");
scanf("%d",&n);
int a[10];
int i=2;
while(n>0){
a[i]=i;
n=n-i;
if(n<=a[i])
break;
i++;
}
int num=i;//最后边一个下标
while(n>0){
a[i]++;
n--;
if(i==2)
i=num+1;//循环,再从后边开始加一
i--;
}
int sum=1;
for(i=2;i<=num;i++)
sum=sum*a[i];
printf("最大乘积为:%d\n",sum);
return 0;
}