有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 06:14:34
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N

有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N(N

有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N
我不写完整程序,提一下思路:
我们要编写一个函数,这个函数把一个数分为两个数之和,并且这两个数的乘积最大,这样的函数是不是很好编写,代码如下:
void f1(int a,int *x,int *y){
*x=a/2;
*y=a-*x;
}
知道为什么这样分吗,原理很简单:两个数都最大的时候,乘积才最大.也就是各取一半,如果a是奇数就让y多1.
要完成把N分为多个数,使其乘积最大,我们就先分为两个数,然后分别对这两个数进行各自进行拆分(递归调用),直到分开的两个数乘积比分前小,那就取消这次拆分.
基于以上说明,我们对f1函数进行修改,增加递归调用部分:
void f1(int n){
int x,y;
x=n/2;
y=n-x;
if (n>=x*y) printf("%d ",n);
else {f1(x);f1(y);}
}
添加计算乘积m的代码,以及主程序,完成的如下:
-----------------
int m;
void f1(int n){
int x,y;
x=n/2;
y=n-x;
if (n>=x*y) {printf("%d ",n);m*=n;}
else {f1(x);f1(y);}
}
main(){
int n;
m=1;
scanf("%d",&n);
f1(n);
printf("\n%d",m);
}
-----------------
程序在SCO UNIX上运行通过,结果如下:
-----------------
$ cc a.c
$ a.out
9
4 2 3
24
$ a.out
10
2 3 2 3
36
$ a.out
12
3 3 3 3
81
$
-----------------

有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N 编个C++程序怎么弄啊.有一个整数n,将n分解成若干个整数之和,问如何分解能使这些数的乘积最大有一个整数n,将n分解成若干个整数之和,问如何分解能使这些数的乘积最大,输出这个乘积m.例如 整数分解(版本2) pascal一个正整数可以分解成若干个自然数之和.请你编一个程序,对于给出的一个正整数n(1 c语言 将一小于100正整数分成若干正整数之和 使乘积最大有一个正整数N,可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N(N 在N中取数 PASCAL由键盘输入N,B={1,2,...,N}为连续N个整数的集合,取B中若干不同的整数,使这些整数之和为给定的M,共有多少种不同的取法? 求证:任意整数n,可以表示为5个立方数之和. 易语言如何将一个整数分解成若干个两个数的乘积? 给出一个整数n,接下来有n个整数,你要求出这n个整数中的最大值.用pascal做 要求如下Description输入若干整数,计算这些整数的和.Input每行首先输入一个整数N(表示共有N个数),接下去分别输入这N个整数.如:3 2 4 5 表示有3个数需要求和,这3个数分别为2,4,5.Output输出这N n(n大于1的整数)条直线最多可以有多少个交点? 如果n表示任何整数,那么一定能表示整数的是?有3个连续整数,用n表示中间的一个,则另两个是? 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和. 自然数的拆分问题 用pascal解决 求大整数n被划分成K个的小整数的算法不好意思,我第一次提问,没说明白.我真正想求的是:一个整数n,(n是15到75的数),把n划分成6个互不相同的小整数之和,要求求出这样的6个小整数,写出算法思 c语言程序设计 三位数分解求累加和输入一个3位的正整数n,编程计算整数n的各位数字之和.输入输入一个正整数n.输出各位数字之和sum.样例输入 208样例输出 10 因子分解是指将一个整数分解为若干个素数的积的过程如20的素数因子有2、2、5(1不是素数因子).要求:输入一个整数(int),请按升序输出该数的所有素数因子以及因子之和. C语言,输入一个整数n再输入n个整数,输出其中所有偶数 给出一个n,接下来有n行,每行一个整数,你要计算这n个整数的和 用pascal做 给出一个n,接下来有n行,每行一个整数,你要计算这n个整数的和 用pascal做