一个正整数正好等于两个质数的乘积,我们称为好数,输入一个正整数n,求2~之间所有的好数中,最大一个数好数。
例如:=10;满足条件的数有4,6,9,10,这四个数都可也分解成两个质因数相乘都是好数,其中10是最大的一个好数,结果输出10。
上代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n = scanner.nextInt(); // 通过用户输入获取 n 的值
int largestGoodNumber = 0;
for (int i = 2; i <= n; i++) {
if (isGoodNumber(i) && i > largestGoodNumber) {
largestGoodNumber = i;
}
}
System.out.println(largestGoodNumber);
}
// 判断一个数是否为好数
public static boolean isGoodNumber(int num) {
for (int i = 2; i * i <= num; i++) {
if (num % i == 0 && isPrime(i) && isPrime(num / i)) {
return true;
}
}
return false;
}
// 判断一个数是否为质数
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}