Difference Between Primes
Problem Description
All you know Goldbach conjecture.That is to say, Every even integer greater than 2 can be expressed as the sum of two primes. Today, skywind present a new conjecture: every even integer can be expressed as the difference of two primes. To validate this conjecture, you are asked to write a program.
Input
The first line of input is a number nidentified the count of test cases(n<10^5). There is a even number xat the next nlines. The absolute value of xis not greater than 10^6.
Output
For each number xtested, outputstwo primes aand bat one line separatedwith one space where a-b=x. If more than one group can meet it, output the minimum group. If no primes can satisfy it, output 'FAIL'.
Sample Input
3
6
10
20
Sample Output
11 5
13 3
23 3
Source
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N= 1000000; int prime[100000],cnt; bool isprime[N]; void Prime() { cnt =0; memset(isprime,true,sizeof(isprime)); isprime[1]=false; for(int i=2; i<N; i++) if(isprime[i]) { for(int j=i+i; j<N; j+=i) isprime[j] = false; prime[cnt++] = i; } } void finder(int m) { for(int i=0; i<cnt; i++) { if(prime[i]>m && isprime[prime[i]-m]) { printf("%d %d\n",prime[i],prime[i]-m); return ; } } puts("FAIL"); } int main() { int t,m; Prime(); scanf("%d",&t); while(t--) { scanf("%d",&m); finder(m); } return 0; }