📜  求最近素数的Java程序(1)

📅  最后修改于: 2023-12-03 15:40:41.831000             🧑  作者: Mango

求最近素数的Java程序
程序介绍

本程序使用Java语言实现了求最近素数的功能。通过输入一个正整数,程序会返回离该数最近的素数。

程序思路

本程序的实现思路如下:

  1. 首先判断输入的数是否为素数,若为素数则直接返回。
  2. 若不为素数,则从输入数往两边开始搜索,遇到素数则返回。
  3. 如果从左往右和从右往左搜索到的两个素数之间距离相等,则随机选择其中一个数作为最近素数并返回。
代码实现
import java.util.Scanner;

public class PrimeNumber {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int num = scanner.nextInt();
        int left = num - 1;
        int right = num + 1;

        // 判断是否为素数
        if (isPrime(num)) {
            System.out.println("离" + num + "最近的素数是:" + num);
            return;
        }

        // 从输入数往两边搜索
        while (left >= 2 || right >= 2) {
            if (left >= 2) {
                if (isPrime(left)) {
                    System.out.println("离" + num + "最近的素数是:" + left);
                    return;
                }
                left--;
            }

            if (right >= 2) {
                if (isPrime(right)) {
                    System.out.println("离" + num + "最近的素数是:" + right);
                    return;
                }
                right++;
            }
        }

        // 如果从左往右和从右往左搜索到的两个素数之间距离相等,则随机选择其中一个数作为最近素数
        int random = (int)(Math.random() * 2);
        if (random == 0) {
            System.out.println("离" + num + "最近的素数是:" + left);
        } else {
            System.out.println("离" + num + "最近的素数是:" + right);
        }
    }

    // 判断是否为素数的函数
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }

        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }

        return true;
    }
}
运行示例

以下是本程序的运行示例:

请输入一个正整数:
27
离27最近的素数是:23
请输入一个正整数:
17
离17最近的素数是:17
总结

本程序通过实现 isPrime 函数来判断一个数是否为素数,并通过循环从输入数往两边搜索离其最近的素数。如果从左往右和从右往左搜索到的两个素数之间距离相等,则随机选择其中一个数作为最近素数。这个程序以简单,容易理解的方式给出了求最近素数的解决方案。