Uva 10948 - The primary problem

/*
Uva 10948 - The primary problem
Verdict :: Accepted
Time:: 0.013
*/
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <algorithm>
#define sf scanf
#define pf printf
#define N 999999
using namespace std;

bool flag[N];
vector <long long> v;

void prime()
{
    long long i,j;

    for (i=4;i<=N;i+=2)
    {
        flag[i] = true;
    }

    v.push_back(2);

    for (i=3;i<=N;i+=2)
    {
        if (flag[i] == false)
        {
            v.push_back(i);
        }

        for (j=i*i;j<=N;j+=i)
        {
            flag[j] = true;
        }
    }
}

int main()
{
    prime();
    bool f = false; long long n;

    while (1 == (sf ("%lld",&n)))
    {
        if (n==0)
        {
            break;
        }

        long long i,j,d = n/2,c;

        pf ("%lld:\n",n);

        for (i=0;i<v.size();i++)
        {
            if (d>=v[i])
            {
                c = n-v[i];

                if (flag[c] == false)
                {
                    if (v[i]+c == n)
                    {
                        pf ("%lld+%lld\n",v[i],c);
                        f = true;
                        break;
                    }
                }
            }

            if (d<v[i])
            {
                break;
            }
        }

        if (!f)
        {
            pf ("NO WAY!\n");
        }

        f = false;
    }

    return 0;
}

Comments

Popular posts from this blog

Uva 10650 - Determinate Prime

SPOJ-CMG - Collecting Mango

LeetCode Palindrome Number