10394 - Twin Primes

#include<stdio.h>
#include<vector>
#include<math.h>
#include<iostream>
#define MAX 20000009
using namespace std;
bool arr[MAX];
vector<long long int>twin_prime1;
vector<long long int>twin_prime2;
void sieve()
{
    long long int i,j,k;
    k=sqrt(MAX);
    for(i=3; i<=k; i+=2)
    {
        if(arr[i]==0)
        {
            for(j=i*i; j<MAX; j+=i+i)
            {
                arr[j]=1;
            }
        }
    }
    arr[1]=1;
    for(i=4; i<MAX; i=i+2)
    {
        arr[i]=1;
    }
    twin_prime1.push_back(3);
    twin_prime2.push_back(5);
    for(i=5; i<MAX; i+=2)
    {
        if(arr[i]==0&&arr[i+2]==0)
        {
            twin_prime1.push_back(i);
            twin_prime2.push_back(i+2);
        }
    }
}
int main()
{
    long long int S;
    sieve();
    while(scanf("%lld",&S)==1)
    {
        printf("(%lld, %lld)\n",twin_prime1[S-1],twin_prime2[S-1]);
    }
    return 0;
}

0 comments: (+add yours?)