任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。 数据范围:输入的数据满足 4≤n≤1000 输入描述: 输入一个大于2的偶数 输出描述: 从小到大输出两个素数 示例1 输入: 20 复制输出: 7 java来写
时间: 2024-02-01 15:14:18 浏览: 101
以下是 Java 的代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 枚举两个素数
int minDiff = Integer.MAX_VALUE; // 记录最小差值
int prime1 = 0, prime2 = 0; // 记录最小差值对应的素数
for (int i = 2; i <= n / 2; i++) {
if (isPrime(i) && isPrime(n - i)) {
int diff = Math.abs(i - (n - i));
if (diff < minDiff) {
minDiff = diff;
prime1 = i;
prime2 = n - i;
}
}
}
System.out.println(prime1);
System.out.println(prime2);
}
// 判断一个数是否为素数
private 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;
}
}
```
思路如下:
1. 读入一个大于2的偶数n。
2. 枚举所有小于等于n/2的素数i,检查n-i是否也是素数,如果是,则计算它们的差值,记录最小差值对应的素数i和n-i。
3. 输出记录下来的最小差值对应的素数i和n-i。
时间复杂度为 O(n^2),可以通过本题。
阅读全文