蓝桥杯:孪生素数对
问题描述
差为2的两个素数被称为孪生素数对,例如3和5, 11和13.
给定一个区间,请输出区间内所有的孪生素数对.
输入格式
两个正整数a,b,其中a<b,以空格分开
输出格式
区间[a,b]内的所有孪生素数对,按从小到大顺序。每行一个素数对,其中小的在前,大的在后,以空格分开。
如果区间内没有素数对的话,输出-1.
样例输入
2 15
样例输出
3 5
5 7
11 13
样例输入
14 18
样例输出
-1
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
int k=0;//用作下标
ArrayList list=new ArrayList();//存储区间素数
int count=0;//计数//是否有素数对
for (int i=a;i<=b;i++){
if (isPrim(i)){
list.add(i);
if (list.size()>1&&(int)list.get(k)-(int)list.get(k-1)==2){//满足条件
System.out.println(list.get(k-1)+" "+list.get(k));
count++;//如果有素数对+1
}
k++;
}
//如果区间内没有素数对的话,输出-1.
if (i==b&&count==0) {
System.out.println("" + -1);
}
}
}
//判断是否是素数
public static boolean isPrim(int num){
if (num<2) return false;
for (int i=2;i*i<=num;i++)
if (num%i==0) return false;
return true;
}
}