📅  最后修改于: 2023-12-03 15:40:41.831000             🧑  作者: Mango
本程序使用Java语言实现了求最近素数的功能。通过输入一个正整数,程序会返回离该数最近的素数。
本程序的实现思路如下:
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 函数来判断一个数是否为素数,并通过循环从输入数往两边搜索离其最近的素数。如果从左往右和从右往左搜索到的两个素数之间距离相等,则随机选择其中一个数作为最近素数。这个程序以简单,容易理解的方式给出了求最近素数的解决方案。