示例:将一个数表示为两个素数之和
public class Main {
public static void main(String[] args) {
int number = 34;
boolean flag = false;
for (int i = 2; i <= number / 2; ++i) {
// condition for i to be a prime number
if (checkPrime(i)) {
// condition for n-i to be a prime number
if (checkPrime(number - i)) {
// n = primeNumber1 + primeNumber2
System.out.printf("%d = %d + %d\n", number, i, number - i);
flag = true;
}
}
}
if (!flag)
System.out.println(number + " cannot be expressed as the sum of two prime numbers.");
}
// Function to check prime 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 是否可以表示为两个素数之和。
程序工作原理
- 首先,我们使用一个
for
循环,从i = 2 到 number / 2
进行迭代。 - 在
for
循环内部,我们使用了两个if
语句。第一个语句检查 i 是否为素数。
如果为真,则第二个if
语句检查number - i
是否为素数。这是因为 i 和 number - i 的和等于 number。 - 如果第二个语句也为
true
,那么我们可以说数字 34 是两个素数有效之和。