有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 21:01:33
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.请编程,由键盘输入一个整数N(N
有一个整数N,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
$
-----------------
我们要编写一个函数,这个函数把一个数分为两个数之和,并且这两个数的乘积最大,这样的函数是不是很好编写,代码如下:
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语言)
编个C++程序怎么弄啊.有一个整数n,将n分解成若干个整数之和,问如何分解能使这些数的乘积最大
易语言如何将一个整数分解成若干个两个数的乘积?
c++对于输入的整数n,将其分解成若干个素数的乘积.
任意给你一个数n,如何将这个数分解为若干个素数的乘积?
在1-100之间,若存在整数n,使X^2+X-n能分解两个整数系数一次式的乘积,这样的n有几个
c语言 给你n个整数,偶数的乘积.
x^2-x-2n能分解为两个整系数一次因式的乘积,当n小于2005时求最大整数n
在1~100之间若存在整数n,使x2+x-n能分解为两个整系数一次式的乘积,这样的n有______个.
在1和100之间有多少个整数N,能够使X^2+X-N分解为两个系数的一次因式的乘积().选择 A:0 B:1 C:2 D
x^2-x-2n能分解为两个整系数一次因式的乘积 若1≤n≤30,且n是整数,有多少个n
c语言如何输入整数N,代表下面有N组测试数据,接下来的N行,每行为一个整数?