示例: 将一个数表示为两个质数之和
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 是两个质数的有效和。