Description
素数也叫质数。如果两个素数的差值为2,则称该两个素数为双胞胎素数。给定任意两个正整数(非素数,大小关系不定),找出这两个正整数之间的所有双胞胎素数。
注:若三个连续的质数,相邻两个都相差2的,叫三生质数。三生质数只有3,5,7一种情况。本题给定数据中不含这种情况,即可以不考虑三生质数情况。
Input
有若干组数据。每组数据由两个正整数组成。
Output
两个正整数之间的所有双胞胎素数。每个数占6位宽度,每行输出10个数,按由小到大的顺序。如果没有这样的数,则不输出任何数据。
Sample Input
200 120
45 15
38 475
Sample Output
137 139 149 151 179 181 191 193 197 199
17 19 29 31 41 43
41 43 59 61 71 73 101 103 107 109
137 139 149 151 179 181 191 193 197 199
227 229 239 241 269 271 281 283 311 313
347 349 419 421 431 433 461 463
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in= new Scanner(System.in);
while(in.hasNext()){
int a = in.nextInt(),c=0;
int b=in.nextInt(),d=0,e=0;
if(a>b)
{
int t=a;
a=b;
b=t;
}
for(int i=a;i<=b;i++)
{boolean bol=isPrimeNormal(i);
if(bol)
{
c++;
}
}
int x[]=new int [c];
for(int i=a;i<=b;i++)
{boolean bol=isPrimeNormal(i);
if(bol)
{
x[d]=i;d++;
}
}
for(int j=0;j<c-1;j++)
{
if(x[j+1]-x[j]==2)
{
System.out.printf("%6d%6d", x[j],x[j+1]);
e++;
if(e%5==0)
{
System.out.println();
}
}
}
System.out.println();}
}
public static boolean isPrimeNormal(int num) {
for(int i=2; i<num; i++) {
if(num%i == 0) {
return false;
}
}
return true;
}}