The First Meeting

Given an array, A, of length N. Find the absolute difference between the smallest and largest prime number in array A.

Example:

Input:  n = 5, a = [1,2,3,4,5]
Output: 3

Approach

C++

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

bool prime[1000001];
void primeInitialize()
{

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

int theFirstMeeting(int nint a[])
{
    sort(aa + n);
    int i = 0j = n - 1;
    int min1 = 1max1 = 1;
    while (i < n)
    {
        if (prime[a[i]])
        {
            min1 = a[i];
            break;
        }
        i++;
    }
    while (j >= 0)
    {
        if (prime[a[j]])
        {
            max1 = a[j];
            break;
        }
        j--;
    }
    if (min1 == 1)
        return -1;
    else
        return max1 - min1;
}
int main()
{

    int n = 5;
    int a[n] = {12345};

    primeInitialize();

    cout << theFirstMeeting(na<< "\n";

    return 0;
}


No comments:

Post a Comment