Uva 10394 - Twin Primes
/*
Uva 10394 - Twin Primes
Verdict : Accepted
Time: 0.149
** Take a array or vector and insert every prime number which has difference 2 between them.
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#define N 18409900
using namespace std;
long long status[9204951],twins[100001];
int t=1;
void prime()
{
long long i,j,qrt,p=2;
for (i=2;i<= N >> 1;i++)
{
status[i] = 0;
}
qrt = long (sqrt(double(N)));
for (i=3;i<=qrt;i+=2)
{
if (status[i>>1] == 0)
{
for (j=i*i;j<=N;j+=i+i)
{
status[j>>1] = 1;
}
}
}
//printf("2 ");
for (i=3;i<=N;i+=2)
{
if (status[i>>1] == 0)
{
//printf("%lld ",i);
if (i-p == 2)
{
twins[t] = p;
t++;
}
p = i;
}
}
}
int main()
{
int input;
prime();
while (scanf("%d",&input)==1)
{
printf("(%lld, %lld)\n",twins[input],twins[input]+2);
}
return 0;
}
Uva 10394 - Twin Primes
Verdict : Accepted
Time: 0.149
** Take a array or vector and insert every prime number which has difference 2 between them.
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#define N 18409900
using namespace std;
long long status[9204951],twins[100001];
int t=1;
void prime()
{
long long i,j,qrt,p=2;
for (i=2;i<= N >> 1;i++)
{
status[i] = 0;
}
qrt = long (sqrt(double(N)));
for (i=3;i<=qrt;i+=2)
{
if (status[i>>1] == 0)
{
for (j=i*i;j<=N;j+=i+i)
{
status[j>>1] = 1;
}
}
}
//printf("2 ");
for (i=3;i<=N;i+=2)
{
if (status[i>>1] == 0)
{
//printf("%lld ",i);
if (i-p == 2)
{
twins[t] = p;
t++;
}
p = i;
}
}
}
int main()
{
int input;
prime();
while (scanf("%d",&input)==1)
{
printf("(%lld, %lld)\n",twins[input],twins[input]+2);
}
return 0;
}
Comments
Post a Comment