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;
}

Comments

Popular posts from this blog

Uva 10650 - Determinate Prime

SPOJ-CMG - Collecting Mango

LeetCode Palindrome Number