📅  最后修改于: 2023-12-03 14:56:22.789000             🧑  作者: Mango
这是一个Java程序,用于查找给定的整数数组中是否存在一个数是另一个数的幂倍数。程序使用了Java中的数学函数库Math类中的pow方法来计算幂次方,以便快速地对数组中的每个元素进行检查。
public class PowerNumberMatcher {
/**
* 判断数组中是否存在一个数是另一个数的幂倍数
*
* @param numbers 数组
* @return 如果存在幂倍数,则返回true;否则返回false
*/
public static boolean hasPowerNumber(int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
if (isPowerNumber(numbers[i], numbers[j]) || isPowerNumber(numbers[j], numbers[i])) {
return true;
}
}
}
return false;
}
/**
* 判断num1是否是num2的幂倍数
*
* @param num1 数字1
* @param num2 数字2
* @return 如果num1是num2的幂倍数,则返回true;否则返回false
*/
private static boolean isPowerNumber(int num1, int num2) {
if (num1 <= 0 || num2 <= 0) {
return false;
}
double log = Math.log(num1) / Math.log(num2);
return Math.pow(num2, Math.round(log)) == num1;
}
}
为了使用该程序,您需要创建一个整数数组,并将其传递给PowerNumberMatcher.hasPowerNumber()方法。示例代码如下:
int[] numbers = {2, 4, 8, 16};
if (PowerNumberMatcher.hasPowerNumber(numbers)) {
System.out.println("The array contains a power number");
} else {
System.out.println("The array does not contain a power number");
}
在此示例中,PowerNumberMatcher.hasPowerNumber()方法将返回true,因为数组中存在一个数是另一个数的幂倍数(即4是2的平方)。
该程序仅适用于正整数。如果在数组中传递负数或零,则程序将返回false。此外,仅限于数组中两个元素之间的幂次方的检查。如果需要比较更多的数字,则需要另外编写代码。