题目描述
编写程序求孪生素数(如果 n 和 n+2都是素数,则称它们是孪生素数)。
输入描述
输入一 个正整数 m(1≤m≤100)。
输出描述
输出两个均不超过 m 的最大孪生素数(中间空一格)。
输入输出样例
示例
输入
20
输出
17 19
这题其实就是简单的判断素数问题。
import java.util.*;
public class Main{
static boolean []match=new boolean[101];//用来判断是否是素数
static void prime(boolean []match,int n) {
for(int i=2;i<=Math.sqrt(n);i++)
if(n%i==0)//一旦能被整除,则标记为false表示非负数
match[n]=false;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt();//输入范围
Arrays.fill(match, true); //一开始假设全为素数
for(int i=2;i<=m;i++)
prime(match,i);
for(int i=m;i>=0;i--) //从后往前遍历,直接找到两个最大的素数
if(match[i]&&match[i-2]) {
System.out.print(i-2+" "+i);
break;
}
}
}