有两个正整数a和b,已知a*b=2048,求a丶b各为何值时,a+b的值最小值。 用java语言

请教大神,这代码是什么意思呀,怎么比较的,没看懂,感谢publicstaticvoidmain(String[]args){intx=1;inty=2048;inta=x... 请教大神,这代码是什么意思呀,怎么比较的,没看懂,感谢
public static void main(String[] args) {
int x = 1;
int y = 2048;
int a = x;
int b = y;
int temp;
for(; x < y; x ++){
if(y % x == 0){
temp = y / x;
if((temp + x) < (a + b)){
a = x;
b = temp;
}
}
}
System.out.println("a:" + a + ",b:" + b);
}
展开
 我来答
晨之光芒
2016-08-13 · 超过33用户采纳过TA的回答
知道答主
回答量:82
采纳率:100%
帮助的人:60.9万
展开全部
一个循环,x*temp=2048(即是y)
然后x值不断+1,相除后得出的结果就是temp(一个中间变量),
if(y % x == 0)这段是确保了偶数,不会除基数

然后中间变量+x小于 a(本次x+1的值)+ b(本次乘积的令一个值)
然后就赋值a = x;
b = temp;
最后不符合x < y; 了,就退出循环,然后就得出最小值了,

因为在循环过程中,a,b值是通过中间值变量temp不断在变化的
追问
if((temp + x) < (a + b))
这是什么意思呢
追答
if((temp + x) < (a + b)) 
temp在执行的时候已经改变了,temp = y / x;

意思就是说x+1之后,另外一个数就是temp
这个时候temp+x就是x+1之后的两个数字之和,
这个时候如果比原来都要小,那就是最小
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式