找出能被 num1或 num2整除的大于 Long.MAX_VALUE的前 10个数字,num1和num2都是整型。 输入格式 输入的第一行包含num1 和 num2的值。 输出格式 输出大于 Long.MAX_VALUE的前 10个数字。 样例输入 4 7 样例输出 9223372036854775808 9223372036854775812 9223372036854775814 9223372036854775816 9223372036854775820 9223372036854775821 9223372036854775824 9223372036854775828 9223372036854775832 9223372036854775835用Java实现,并且详细说明
时间: 2024-03-25 14:36:33 浏览: 13
题目分析:
题目要求我们找出大于 Long.MAX_VALUE 的前 10 个能被 num1 或 num2 整除的数字。由于 Long.MAX_VALUE 是 Java 中 long 类型的最大值,我们需要使用 BigInteger 类型来进行计算。
因为 num1 和 num2 是整型,所以我们可以通过循环遍历每个大于 Long.MAX_VALUE 的数字,判断其是否能被 num1 或 num2 整除,并将满足条件的数字存储到一个列表中。当列表中的数字个数达到 10 个时,输出列表中的数字即可。
Java 代码实现:
下面是 Java 代码的实现,其中使用了 BigInteger 类型和 ArrayList 集合来存储满足条件的数字。代码中的注释对实现过程进行了详细说明。
```
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
BigInteger maxLong = BigInteger.valueOf(Long.MAX_VALUE); // 获取 long 类型的最大值
BigInteger inc = BigInteger.ONE; // 设置增量为 1
BigInteger num = maxLong.add(BigInteger.ONE); // 从 long 类型最大值加 1 开始遍历
ArrayList<BigInteger> list = new ArrayList<>();
while (list.size() < 10) { // 当列表中的数字个数达到 10 个时结束循环
if (num.mod(BigInteger.valueOf(num1)).equals(BigInteger.ZERO) || num.mod(BigInteger.valueOf(num2)).equals(BigInteger.ZERO)) {
// 判断当前数字是否能被 num1 或 num2 整除
list.add(num); // 如果满足条件,则将其添加到列表中
}
num = num.add(inc); // 将数字加上增量
}
for (BigInteger i : list) {
System.out.println(i); // 输出满足条件的数字
}
}
}
```
该代码的时间复杂度为 O(n),其中 n 是满足条件的数字的个数。由于题目要求输出前 10 个满足条件的数字,因此该代码的时间复杂度为 O(10)。