Java 程序检查数字是否为素数


给定一个数字,假设为 N,编写一个 Java 程序来检查给定的数字是否为素数。素数是只有两个因数 1 和它本身的特殊数字,它们不能被任何其他数字整除。

示例场景 1

Input: num = 1;
Output: 1 is not a prime number 

示例场景 2

Input: num2 = 5;
Output: 5 is a prime number 

5 只能被 1 和 5 整除

使用因式分解检查素数

检查给定数字是否为素数的朴素方法是 因式分解。在这个过程中,我们首先将给定数字除以所有小于或等于它的自然数,然后检查因数的数量。如果因数的数量只有两个,则给定数字是素数,否则不是。

示例

以下示例是上述方法的实际说明。

public class Example {
   public static void main(String[] args) {
      int num = 89;
      System.out.println("The given number is: " + num);
      // initial count of factors
      int count = 0;
      // to check prime number
      if(num == 2) {
         System.out.println(num + " is a prime number");
      } else {
         // checking number of factors
         for(int i = 1; i <= num; i++) {
            if(num % i == 0) {
               count++;
            }
         }
         // checking number of counts to print result
         if(count == 2) {
            System.out.println(num + " is a prime number");
         } else {
            System.out.println(num + " is not a prime number");
         }
      }
   }
}

运行此代码后,将显示以下结果 -

The given number is: 89
89 is a prime number

使用平方根检查素数

我们可以通过仅检查到数字的平方根来优化上述方法。原因是数字的较大因数必须乘以一个较小的因数,而该较小的因数已经过检查。

示例

以下 Java 程序说明了如何以更优化的方式检查给定数字是否为素数。

public class Example {
   public static boolean checkPrimeFunc(int nums) {
      if (nums <= 1) {
         return false;
      }
      for (int i = 2; i <= Math.sqrt(nums); i++) {
         if (nums % i == 0) {
            return false;
         }
      }
      return true;
   }

   public static void main(String[] args) {
      int num = 29;
      System.out.println("The given number is: " + num);
      System.out.println(num + " is prime ? " + checkPrimeFunc(num));
   }
}

执行上述代码后,将显示以下结果 -

The given number is: 29
29 is prime ? true

更新于: 2024-08-01

16K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告