InputThe first line contains a single integer T, indicating the number of test cases.
Each test case only contains two integers A and B.
Technical Specification
1. 1 <= T <= 1000
2. 1 <= A, B <= 150OutputFor each test case, output the case number first, then the minimum common prime friend of A and B, if not such number exists, output -1.Sample Inputjava
2 2 4 3 6
Sample Output數組
Case 1: 1 Case 2: -1
題意:給出兩個整數ab 使a+x b+x均爲素數 且ab之間沒有素數 求最小的符合條件的x
思路:java數組開大了就爆空間,注意空間;一個潛在條件a+x-(b+x)=a-b<150,即兩個素數之差小於150;
代碼:
import java.util.Scanner; public class Main { static final int max=(int)16000000; static int prime[]=new int[1031131]; static boolean is_prime[]=new boolean[max]; static int k=0; public static void Prime(){ is_prime[0]=is_prime[1]=true; for(int i=2;i<max;i++){ if(!is_prime[i]) prime[k++]=i; for(int j=0;j<k&&prime[j]*i<max;j++){ is_prime[i*prime[j]]=true; if(i%prime[j]==0) break; } } } public static void main(String[] args) { Prime(); // System.out.println(k); Scanner scan=new Scanner(System.in); int t=scan.nextInt(); for(int i=1;i<=t;i++){ int a=scan.nextInt(); int b=scan.nextInt(); if(a>b) { int tmp=a; a=b; b=tmp; } System.out.print("Case "+i+": "); boolean flag=false; int num=0; for(int j=0;j<k-1;j++){ if(prime[j]>=a && prime[j+1]>=b &&prime[j]-a==prime[j+1]-b &&prime[j+1]-prime[j]<150){ num=prime[j]-a; flag=true; break; } } if(flag) System.out.println(num); else System.out.println("-1"); } } }