Java 程序:检查一个数字是否可以表示为两个质数之和
要理解这个示例,你应该具备以下 Java 编程主题的知识:
示例:将一个数字表示为两个质数之和
public class Main {
public static void main(String[] args) {
int number = 34;
boolean flag = false;
for (int i = 2; i <= number / 2; ++i) {
// 判断 i 是否为质数的条件
if (checkPrime(i)) {
// 判断 number - i 是否为质数的条件
if (checkPrime(number - i)) {
// number = primeNumber1 + primeNumber2
System.out.printf("%d = %d + %d\n", number, i, number - i);
flag = true;
}
}
}
if (!flag)
System.out.println(number + " 无法表示为两个质数之和。");
}
// 检查质数的函数
static boolean checkPrime(int num) {
boolean isPrime = true;
for (int i = 2; i <= num / 2; ++i) {
if (num % i == 0) {
isPrime = false;
break;
}
}
return isPrime;
}
}
输出
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17
在上述示例中,我们创建了 checkPrime()
方法来判断一个数字是否为质数。如果传入的数字是质数,该方法返回 true
。
这里,我们有一个数字 34。程序尝试检查 34 是否可以表示为两个质数之和。
程序的工作原理
-
首先,我们从
i = 2
运行一个for
循环到number / 2
。 -
在
for
循环内部,我们使用了两个if
语句。第一个语句检查i
是否为质数。如果是,第二个
if
语句检查number - i
是否为质数。这是因为i
和number - i
的和等于number
。 -
如果第二个语句也为
true
,那么我们可以说数字 34 是两个质数之和的有效表示。