述 |
请实现如下接口 public static class PrimePair { public int primeMin; public int primeMax; } public static PrimePair findPrimeNumber(int number) { /* 请实现 */
return null; }
譬如:输入20 ,输出 7 13 约束
|
---|---|
知识点 | 循环 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个偶数 |
输出 | 输出两个素数 |
样例输入 | 20 |
样例输出 | 7 13 |
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
if( n % 2 == 0 && n > 5 && n <= 1000) //输入只能是偶数,且范围为 5 < n <= 1000
getResult(n);
}
private static void getResult(int n){
int x = 0;
int temp = n; //记录两个素数之间的差值
int n1 = 0; //记录两个素数中较小的那个
int n2 = 0; //记录两个素数中较大的那个
for(int i = 1; i <= n; i++){
if(isPrime(i)){
x = n -i; //i为其中一个素数,如果n-i也为素数,且它们之间的差值小于之前记录的差值,则存储下来
if(isPrime(x) && Math.abs(x-i) <= temp){
temp = Math.abs(x-i);
n1 = x > i ? i: x; //记录较小的素数
n2 = x > i ? x: i; //记录较大的素数
}
}
}
System.out.println(n1);
System.out.println(n2);
}
private static boolean isPrime(int n) { //判断是否为素数
if (n == 1)
return true;
if (n > 1) {
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
}
}
return true;
}
}