首页 > 代码库 > 1.12.10

1.12.10

10:素数对

总时间限制:
1000ms
内存限制:
65536kB
描述

两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。

输入
一个正整数n。1 <= n <= 10000。
输出
所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
样例输入
100
样例输出
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
 1 #include<cstdio>
 2 #include<cmath>
 3 using namespace std;
 4 void su(int);
 5 int main()
 6 {
 7     int n;
 8     scanf("%d",&n);
 9     su(n);
10     return 0;
11 }
12 void su(int n)
13 {
14     bool l=0,s=0,k=0,x1=0,x2=0,p,h1=0,h2=0;
15     int x,y;
16     for(int i=2;i<=n;i++)
17     {
18         k=0,s=0;
19         if(i==2)
20         {
21             x==i;
22             s=1;
23             x1=1;
24             continue;
25         }
26         for(int j=2;j<=sqrt(i);j++)
27         {
28             if(i%j==0)
29             {
30             k=1;
31             break;
32             }
33         }
34         if(k==0&&x1==0)
35          {
36              x=i;x1=1;s=0;
37          }
38         else
39         if(k==0&&x2==0)
40          {
41              y=i;x2=1;s=1;
42          }
43         else
44         if(k==0&&x1==1&&x2==1)
45         {
46             p=x;
47             x=y;
48             y=i;
49             s=1;
50         }
51         if(x1==1&&x2==1&&y-x==2&&s==1)
52         {
53             printf("%d %d\n",x,y);l=1;
54         }
55     }
56     if(l==0)
57     printf("empty");
58 }

 

1.12.10