hdu 4715(打表)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4715

思路:先打个素数表,然后判断一下就可以了。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 
 8 bool isprime[7000002];
 9 int num[7000000];
10 
11 int main()
12 {
13     int k=0;
14     memset(isprime,true,sizeof(isprime));
15     isprime[0]=isprime[1]=false;
16     for(int i=2;i<sqrt(7000000*1.0);i++){
17         if(isprime[i]){
18             for(int j=i*i;j<7000000;j+=i){
19                 isprime[j]=false;
20             }
21         }
22     }
23     for(int i=1;i<7000000;i++){
24         if(isprime[i])num[k++]=i;
25     }
26     int _case,n;
27     scanf("%d",&_case);
28     while(_case--){
29         scanf("%d",&n);
30         if(n==0){
31             puts("2 2");
32         }else if(n<0){
33             n=-1*n;
34             bool flag=false;
35             for(int i=0;i<k;i++){
36                 if(isprime[num[i]+n]){
37                     flag=true;
38                     printf("%d %d
",num[i],num[i]+n);
39                     break;
40                 }
41             }
42             if(!flag)puts("FAIL");
43         }else {
44             bool flag=false;
45             for(int i=0;i<k;i++){
46                 if(isprime[num[i]+n]){
47                     flag=true;
48                     printf("%d %d
",num[i]+n,num[i]);
49                     break;
50                 }
51             }
52             if(!flag)puts("FAIL");
53         }
54     }
55     return 0;
56 }
View Code
原文地址:https://www.cnblogs.com/wally/p/3308693.html