Java 寻找最接近的质数

Java 寻找最接近的质数

质数是大于1的正整数,只能被1和它本身整除。

质数是数学和计算机科学中的基本概念。它们是只能被1和本身整除的整数。在许多算法中,找到质数是一项重要任务,有几种方法可以确定一个数是否为质数。其中一个问题是找到给定数最接近的质数。

在这里,我们将探讨如何找到任意数的最接近的质数。

让我们开始吧!

例如

给定整数:15

最接近的质数:13

步骤

步骤-1

步骤1 :检查输入数是否为质数。

步骤2 :如果输入数是质数,程序会输出该数并退出。

步骤3 :如果输入数不是质数,则程序会通过检查输入数前后的数来寻找最接近的质数。

步骤4 :使用蛮力法来检查一个数是否为质数,通过检查所有小于它平方根的数。

步骤5 :打印输入数最接近的质数。

步骤-2

步骤1 :使用筛法生成一个包含2n以内的质数列表。

步骤2 :寻找最接近的质数。

步骤3 :使用筛法生成一个质数列表,通过消除每个质数的所有倍数直到其平方根。

步骤4 :通过在质数列表中检查输入数上下的数来寻找最接近的质数。

步骤5 :打印输入数最接近的质数。

语法

在Java中,Array.length方法返回给定数组的长度。

以下是其语法-

prime.lenght

‘prime’是一个数组。

多种方法

我们以不同的方法提供了解决方案。

  • 通过使用蛮力方法

  • 通过使用筛法

让我们逐个查看程序和输出。

方法一:通过使用蛮力方法

在这种方法中,程序将初始化一个整数。然后通过使用蛮力方法找到最接近的质数。

示例

public class Main {
   // Function to check if a number is prime
   static boolean isPrime(int n) {
      if (n <= 1) return false;
      for (int i = 2; i <= Math.sqrt(n); i++) {
         if (n % i == 0) return false;
      }
      return true;
   }
   public static void main(String[] args) {
      int n = 54;
      // Check if the input number is prime
      if (isPrime(n)) {
         System.out.println(n + " is a prime number.");
         return;
      }
      // Find the closest prime number by checking numbers above and below the input number
      int lower = n - 1;
      int upper = n + 1;
      while (true) {
         if (isPrime(lower)) {
            System.out.println(lower + " is the closest prime number to " + n + ".");
            return;
         } else if (isPrime(upper)) {
            System.out.println(upper + " is the closest prime number to " + n + ".");
            return;
         }
         lower--;
         upper++;
      }
   }
}

输出

53 is the closest prime number to 54.

方法二:使用筛子法

在这种方法中,程序将初始化一个整数。然后使用筛子法生成一个素数列表,然后找到最接近的素数。

示例

import java.util.Arrays;
public class Main {
   // Function to generate a list of prime numbers up to a given limit
   static boolean[] sieve(int limit) {
      boolean[] prime = new boolean[limit+1];
      Arrays.fill(prime, true);
      prime[0] = false;
      prime[1] = false;
      for (int i = 2; i*i <= limit; i++) {
         if (prime[i]) {
            for (int j = i*i; j <= limit; j += i) {
               prime[j] = false;
            }
         }
      }
      return prime;
   }
   // Function to find the closest prime number to a given number
   static int closestPrime(int n, boolean[] prime) {
      int lower = n - 1;
      int upper = n + 1;
      while (true) {
         if (lower >= 0 && prime[lower]) {
            return lower;
         } else if (upper < prime.length && prime[upper]) {
            return upper;
         }
         lower--;
         upper++;
      }
   }
   public static void main(String[] args) {
      int n = 27;
      // Generate a list of prime numbers up to 2n
      boolean[] prime = sieve(2*n);
      // Find the closest prime number to n
      int closest = closestPrime(n, prime);
      System.out.println("The closest prime number to " + n + " is " + closest);
   }
}

输出

The closest prime number to 27 is 29

在这篇文章中,我们使用Java编程语言探讨了不同的方法来检查最接近的素数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程