Prime Friend Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4659 Accepted Submission(s): 952
Problem Description Besides the ordinary Boy Friend and Girl Friend, here we define a more academic kind of friend: Prime Friend. We call a nonnegative integer A is the integer B’s Prime Friend when the sum of A and B is a prime. So an integer has many prime friends, for example, 1 has infinite prime friends: 1, 2, 4, 6, 10 and so on. This problem is very simple, given two integers A and B, find the minimum common prime friend which will make them not only become primes but also prime neighbor. We say C and D is prime neighbor only when both of them are primes and integer(s) between them is/are not. Input The 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 <= 150 Output For 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 Input 2 2 4 3 6 Sample Output Case 1: 1 Case 2: -1 Author iSea@WHU Source The 6th Central China Invitational Programming Contest and 9th Wuhan University Programming Contest Final Recommend #include<iostream> #include<cstdio> #include<string.h> using namespace std; #define N 21000000 bool a[N+5]; long long b[N+1]; int main() { int T,i,j,k; long long A,B,e=1,t; memset(a,true,sizeof(a)); a[0]=false; a[1]=false; for(i=2;i<N;i++) { if(a[i]==true) { for(j=i*2;j<N;j+=i) a[j]=false; b[e++]=i; } } k=1; scanf("%d",&T); while(T--) { t=-1; scanf("%lld%lld",&A,&B); if(A>B) swap(A,B); for(i=1;i<e;i++) { if(b[i]>=A&&b[i+1]>=B&&(b[i]-A==b[1+i]-B)) { t=b[i]-A; break; } } cout<<"Case "<<k++<<": "<<t<<endl; } return 0; } |