hdu4715 (素数删选法)

来源:互联网 发布:便利店文化知乎 编辑:程序博客网 时间:2024/04/30 12:02

题意:给出一个偶数(不论正负),求出两个素数a,b,能够满足 a-b=x,素数在1e6以内。
只要用筛选法打出素数表,枚举查询下就行了。
注意,偶数有可能是负数,其实负数就是将它正数时的结果颠倒就行了。
代码:

#include<stdio.h>#define max 1000005int main(){    int i,j;    int prime[max]={0,1};    int t;    for(i=2;i<max;i++)    {        if(!prime[i])        {            for(j=i;j<max;j=j+i)                    prime[j]=i;        }    }    scanf("%d",&t);    while(t--)    {        int x,flag=1;        scanf("%d",&x);        if(x<0)        {            x=-x;            flag=0;        }        for(i=2;i<max;i++)        {            if(prime[i]==i)                if(prime[x+i]==x+i)                {                    if(flag)                    {                        printf("%d %d\n",x+i,i);                        break;                    }                    else                    {                        printf("%d %d\n",i,x+i);                        break;                    }                }        }    }}
0 0
原创粉丝点击