zoukankan      html  css  js  c++  java
  • HDU-4715 Difference Between Primes(线性筛法)

    Difference Between Primes

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


    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
     
    NOIP2017准备之线性筛法
     
     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 typedef long long LL;
     4 const int MAX=1e6+5;
     5 int n,cas;
     6 int pri[MAX];
     7 bool t[MAX];
     8 inline int read(){
     9     int an=0,x=1;char c=getchar();
    10     while (c<'0' || c>'9') {if (c=='-') x=-1;c=getchar();}
    11     while (c>='0' && c<='9') {an=an*10+c-'0';c=getchar();}
    12     return an*x;
    13 }
    14 void Prime(){
    15     int i,j;
    16     memset(t,true,sizeof(t));
    17     for (i=2;i<MAX;i++){
    18         if (t[i]) pri[++pri[0]]=i;
    19         for (j=1;j<=pri[0] && pri[j]*i<MAX;j++){
    20             t[i*pri[j]]=false;
    21             if (i%pri[j]==0) break;
    22         }
    23     }
    24 }
    25 int main(){
    26     freopen ("prime.in","r",stdin);
    27     freopen ("prime.out","w",stdout);
    28     int i,j,x;
    29     Prime();
    30     bool fu;
    31     cas=read();
    32     while (cas--){
    33         x=read();
    34         fu=false;
    35         if (x<0){fu=true;x=-x;}
    36         bool flag=false;
    37         for (i=1;i<=pri[0];i++){
    38             if (pri[i]+x>=MAX) continue;
    39             if (t[pri[i]+x]) break;
    40         }
    41         if (i==pri[0]+1){puts("FAIL");}
    42         else{
    43             if (fu){
    44                 printf("%d %d
    ",pri[i],pri[i]+x);
    45             }
    46             else{
    47                 printf("%d %d
    ",pri[i]+x,pri[i]);
    48             }
    49         }
    50     }
    51     return 0;
    52 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    MYSQL设置允许所有访问
    解决ios端的H5,input有阴影的问题
    linux查看某个时间段的日志(sed -n)
    centos如何创建自启动脚本
    laravel做数据迁移的时候进行表的注释
    taro编译微信小程序,报错“未找到setmap.json文件”
    java百科常识
    spring自动装配
    top命令内容详解
    jemter 随机取数组里面的值放入请求
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/7657962.html
Copyright © 2011-2022 走看看