UVA 10395 素数筛
Posted cautx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 10395 素数筛相关的知识,希望对你有一定的参考价值。
Twin Primes
Twin primes are pairs of primes of the form (p; p + 2). The term \twin prime" was coined by Paul
Stckel (1892-1919). The rst few twin primes are (3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43).
In this problem you are asked to nd out the S-th twin prime pair where S is an integer that will be
given in the input.
Input
The input will contain less than 10001 lines of input. Each line contains an integers S (1 S 100000),
which is the serial number of a twin prime pair. Input le is terminated by end of le.
Output
For each line of input you will have to produce one line of output which contains the S-th twin prime
pair. The pair is printed in the form (p1,<space>p2). Here <space> means the space character (ASCII
32) . You can safely assume that the primes in the 100000-th twin prime pair are less than 20000000.
Sample Input
1
2
3
4
Sample Output
(3, 5)
(5, 7)
(11, 13)
(17, 19)Twin primes are pairs of primes of the form (p; p + 2). The term \twin prime" was coined by Paul
Stckel (1892-1919). The rst few twin primes are (3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43).
In this problem you are asked to nd out the S-th twin prime pair where S is an integer that will be
given in the input.
Input
The input will contain less than 10001 lines of input. Each line contains an integers S (1 S 100000),
which is the serial number of a twin prime pair. Input le is terminated by end of le.
Output
For each line of input you will have to produce one line of output which contains the S-th twin prime
pair. The pair is printed in the form (p1,<space>p2). Here <space> means the space character (ASCII
32) . You can safely assume that the primes in the 100000-th twin prime pair are less than 20000000.
Sample Input
1
2
3
4
Sample Output
(3, 5)
(5, 7)
(11, 13)
(17, 19)
题意:
定义双素数(p,p+2),p,p+2都为素数。
先输入若干个n,输出第n对双素数。
分析:
时间限制为3000ms,数据量为2e7,可以直接暴力求解。
首先用欧拉筛筛出所有素数,然后暴力枚举所有素数,判断是否是双素数即可。
AC code:
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> P; P p[20000005]; bool u[20000005]; int su[20000005]; int num; void olas() num=1; memset(u,true,sizeof(u)); for(int i=2;i<=20000000;i++) if(u[i]) su[num++]=i; for(int j=1;j<num;j++) if(i*su[j]>20000000) break; u[i*su[j]]=false; if(i%su[j]==0) break; int main() //freopen("input.txt","r",stdin); int n; olas(); int num=0; for(int i=2;i<=20000000-2;i++) if(u[i]&&u[i+2]) p[num++]=P(i,i+2); while(~scanf("%d",&n)) printf("(%d, %d)\n",p[n-1].first,p[n-1].second); return 0;
以上是关于UVA 10395 素数筛的主要内容,如果未能解决你的问题,请参考以下文章