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) {

      // 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 是否为素数。这是因为 inumber - i 的和等于 number
  • 如果第二个语句也为 true,那么我们可以说数字 34 是两个素数有效之和。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战