有a,b 2个正整数,a*b = 2048;a和b为何值a+b和最小用Java代码计算
时间: 2024-02-18 19:06:09 浏览: 29
可以使用Java代码实现上面的算法,如下所示:
```java
public class Main {
public static void main(String[] args) {
int n = 2048;
int[] factors = new int[]{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
int minSum = Integer.MAX_VALUE;
int minA = 0;
int minB = 0;
for (int i = 0; i < factors.length; i++) {
if (n % factors[i] == 0) {
int a = factors[i];
int b = n / a;
int sum = a + b;
if (sum < minSum) {
minSum = sum;
minA = a;
minB = b;
}
}
}
System.out.println("a = " + minA + ", b = " + minB + ", a + b = " + minSum);
}
}
```
输出结果为:
```
a = 32, b = 64, a + b = 96
```
因此,a和b的值分别为32和64,它们的和最小为96。