Pairs

You need to find no. of ways of selecting a pair of prime number 

(p) and a composite number (q) in a given range lp,qr.

Example:

Input:  l = 5,  r = 11
Output: 12

Approach

C++

#include <bits/stdc++.h>
using namespace std;

bool prime[10001];
void primeInitialize()
{

    memset(primetruesizeof(prime));
    prime[0] = false;
    prime[1] = false;
    for (long long i = 2i * i <= 10000i++)
    {
        if (prime[i])
        {
            for (long long j = i * ij <= 10000j += i)
                prime[j] = false;
        }
    }
}

long long pairs(long long llong long r)
{
    primeInitialize();

    long long ans[10001] = {0};
    for (long long i = 0i <= 10000i++)
    {
        if (prime[i])
            ans[i] = ans[i - 1] + 1;
        else
            ans[i] = ans[i - 1];
    }

    long long cnt = 0;
    cnt = ans[r] - ans[l - 1];
    if (l == 1)
        return (r - l - cnt) * cnt;
    else
        return (r - l - cnt + 1) * cnt;
}
int main()
{
    long long l = 5r = 11;

    cout << pairs(lr<< "\n";

    return 0;
}


No comments:

Post a Comment