原题:
差为2的两个素数被称为孪生素数对,例如3和5, 11和13给定一个区间,请输出区间内所有的孪生素数对.
输出格式:
区间[a,b]内的所有孪生素数对,按从小到大顺序。每行一个素数对,其中小的在前,大的在后,以空格分开。如果区间内没有素数对的话,输出-1.
有技巧的部分就在判断素数(质数)这里
下面是实现代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int count = 0;
for(; a+2 < b; a++) {
if(judge(a) && judge(a+2)) {
System.out.println(a + " " + (a+2) );
count++;
}
}
if(count == 0) {
System.out.println(-1);
}
}
public static boolean judge(int n) {
if(n < 2) {
return false;
}
for(int i = 2; i <= Math.sqrt(n); i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
}