您的位置:首页 > Web前端

HDU 4715 Difference Between Primes(数学啊)

2014-11-23 19:56 495 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4715

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

2013 ACM/ICPC Asia Regional Online
—— Warmup

题意:

求a-b=x;且a、b为素数!

代码如下:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1000000;
int a[maxn], p[maxn];
int l = 0;
void init()//a[i]=0为素数
{
    int i;
    a[0] = 2;a[1] = 2;
    for(i = 2; i*i <= maxn; i++)  
    {  
        if(!a[i])  
        {  
            for(int j = i; j*i <= maxn; j++)  
            {  
                a[j*i] = 1;  
            }  
        }
    }
    for(i = 2; i <= maxn; i++)
    {
        if(!a[i])
        {
            p[l++] = i;
        }
    }
}
int main()
{
    memset(a,0,sizeof(a));
    init();
    int i, j;
    int n, b;
    while(~scanf("%d",&n))
    {
        for(int k = 0; k < n; k++)
        {
            scanf("%d",&b);
            int t1, t2;
            int flag = 0;
            for(i = 0; i < l; i++)
            {
                if(p[i] > b && a[p[i]-b]==0)
                {
                    flag = 1;
                    printf("%d %d\n",p[i], p[i]-b);
                    break;
                }
            }
            if(!flag)
            {
                printf("FAIL\n");
            }
        }
    }
    return 0;
}
/*
99
6
10
20
900000
999999
999998
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: