跳到主要内容

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 是否为质数。这是因为 inumber - i 的和等于 number

  • 如果第二个语句也为 true,那么我们可以说数字 34 是两个质数之和的有效表示。