首页 > 代码库 > 1436 孪生素数 2

1436 孪生素数 2

1436 孪生素数 2

 

时间限制: 2 s
空间限制: 1000 KB
题目等级 : 白银 Silver
 
 
 
题目描述 Description

如m=100,n=6

则将输出100以内的所有相差6的孪生素数:如,

5 11

7 13

....

83 89

请按此规律输出数与数之间用半角空格区分,每一对一行.

输入描述 Input Description

第一行输入一个整数数m为一个范围(如100)

第二行输入一个整数k为目标孪生素数的公差(如6)

输出描述 Output Description

每行输出一对,最后一行输出:Total Is:?(?表示总共有几对这样的数,如果不存在则输出Total Is:0)

样例输入 Sample Input

例如1:

50 2

例如2:

100 90

例如3:

200 199

样例输出 Sample Output

例如1:

3 5
5 7
11 13
17 19
29 31
41 43
Total Is:6

例如2:

7 97
Total Is:1

例如3:

Total Is:0

数据范围及提示 Data Size & Hint

m<=5000

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 int vis[5001];
 6 int main()
 7 {
 8     int n,m;
 9     cin>>m>>n;
10     for(int i=2;i<=sqrt(m)+1;i++)
11      {
12          if(vis[i]==0)
13           {
14               for(int j=i*2;j<=m;j+=i)
15                {
16                    vis[j]=1;
17                }
18           }
19      }
20      int tot=0;
21     for(int i=2;i<=m-n;i++)
22      {
23          if(vis[i]==0&&vis[i+n]==0) 
24           {
25               tot++;
26             cout<<i<<" "<<i+n<<endl; 
27           }
28      }
29      cout<<"Total Is:"<<tot;
30      return 0;
31 }

 

1436 孪生素数 2