Java 程序判断一个数字是否为素数

要理解此示例,您应了解以下Java编程主题


素数是只能被两个数字整除的数字:1 和它本身。因此,如果一个数字可以被任何其他数字整除,它就不是素数。

示例 1:使用 for 循环检查素数的程序

public class Main {

  public static void main(String[] args) {

    int num = 29;
    boolean flag = false;

    // 0 and 1 are not prime numbers
    if (num == 0 || num == 1) {
        flag = true;
    }

    for (int i = 2; i <= num / 2; ++i) {

      // condition for nonprime number
      if (num % i == 0) {
        flag = true;
        break;
      }
    }

    if (!flag)
      System.out.println(num + " is a prime number.");
    else
      System.out.println(num + " is not a prime number.");
  }
}

输出

29 is a prime number.

在上面的程序中,for 循环用于确定给定的数字 num 是否是素数。

这里,请注意我们是从 2 循环到 num/2。这是因为一个数字不能被大于它一半的数字整除。

for 循环中,我们检查数字是否可以被给定范围 (2...num/2) 中的任何数字整除。

  • 如果 num 可以被整除,flag 被设置为 true,我们跳出循环。这表明 num 不是素数。
  • 如果 num 不能被任何数字整除,flag 为 false,则 num 是素数。

示例 2:使用 while 循环检查素数的程序

public class Main {

  public static void main(String[] args) {

    int num = 33, i = 2;
    boolean flag = false;
    
    // 0 and 1 are not prime numbers
    if (num == 0 || num == 1) {
        flag = true;
    }
    
    while (i <= num / 2) {

      // condition for nonprime number
      if (num % i == 0) {
        flag = true;
        break;
      }

      ++i;
    }

    if (!flag)
      System.out.println(num + " is a prime number.");
    else
      System.out.println(num + " is not a prime number.");
  }
}

输出

33 is not a prime number.

在上面的程序中,while 循环被用来代替 for 循环。循环一直运行直到 i <= num/2。在每次迭代中,都会检查 num 是否可以被 i 整除,并将 i 的值增加 1。


另请阅读

在我们结束之前,让我们来测试一下您对 Java 程序判断数字是否为素数的知识!您能解决以下挑战吗?

挑战

编写一个函数来检查一个数字是否为素数。

  • 一个数字如果是素数,则它只有两个不同的因子:1 和它本身。例如,像 2357 这样的数字都是素数。
  • 如果数字是素数,则返回 "It's a prime number"。否则,返回 "It's not a prime number"
你觉得这篇文章有帮助吗?

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

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

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