有两个正整数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);
} 展开
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);
} 展开
展开全部
一个循环,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不断在变化的
然后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之后的两个数字之和,
这个时候如果比原来都要小,那就是最小
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |