Cod sursa(job #2847408)

Utilizator SabailaCalinSabaila Calin SabailaCalin Data 10 februarie 2022 19:34:26
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream f ("pairs.in");
ofstream g ("pairs.out");

const int N_MAX = 100005;

int n;
bool isPrime[N_MAX];
vector <int> primes;
vector <int> numbers;

void Eratosthenes()
{
    for (int i = 2; i <= N_MAX / 2; i++)
    {
        if (isPrime[i] == 0)
        {
            for (int j = 2 * i; j <= N_MAX; j += i)
            {
                isPrime[j] = 1;
            }
        }
    }

    for (int i = 2; i <= N_MAX; i++)
    {
        if (isPrime[i] == 0)
        {
            primes.push_back(i);
        }
    }
}

bool PrimeBetween(int x, int y)
{
    if (x == y)
    {
        return false;
    }

    int pos = 0;
    while (primes[pos] <= x && primes[pos] <= y)
    {
        if (x % primes[pos] == 0 && y % primes[pos] == 0)
        {
            return false;
        }
        pos++;
    }
    return true;
}

int main()
{
    Eratosthenes();
    f >> n;
    int cnt = 0;
    for (int i = 1; i <= n; i++)
    {
        int x;
        f >> x;
        for (unsigned int j = 0; j < numbers.size(); j++)
        {
            if (PrimeBetween(x, numbers[j]) == true)
            {
                cnt++;
            }
        }
        numbers.push_back(x);
    }
    g << cnt;
}