hdu4715 Difference Between Primes

来源:互联网 发布:webview内存优化 编辑:程序博客网 时间:2024/06/04 18:00

Difference Between Primes

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


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
361020
 

Sample Output
11 513 323 3
水题,
#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>using namespace std;#define mod 1000000007int ans;int prime[1050000],pans,p[1050000];int re;int n;int init(){    int i;    memset(prime,0,sizeof(prime));    prime[0]=prime[1]=1;    for(i=2;i<=1000050;i++)    {        if(!prime[i])        for(int j=i+i;j<1000500;j=j+i)        {            prime[j]=1;        }    }    pans=0;    for(i=2;i<=1000000;i++)    {        if(!prime[i])        p[pans++]=i;    }    return 1;}int main(){    init();    int tcase,i;    scanf("%d",&tcase);    bool flag=true;    while(tcase--)    {        scanf("%d",&n);        flag=true;        for(i=0;i<pans;i++)        {            if(p[i]>=n&&prime[p[i]-n]==0)            {                printf("%d %d\n",p[i],p[i]-n);                flag=false;                break;            }        }        if(flag)        printf("FAIL\n");    }    return 0;}



 

Statistic | Submit | Clarifications | Back