Pagini recente » Cod sursa (job #2181227) | Cod sursa (job #1957186) | Cod sursa (job #1908057) | Cod sursa (job #1075497) | Cod sursa (job #2774240)
#include <bits/stdc++.h>
#define DIM 1000005
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n, nrDivImp[DIM], fr[DIM], maxi;
bitset <DIM> v;
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
{
int x;
f >> x;
fr[x]++;
maxi = max(maxi, x);
}
long long rez = n * (n - 1) / 2;
for(int i = 2; i <= maxi; i++)
if(!v[i])
{
int cnt= 0 ;
bool isPrim = 0;
if(!nrDivImp[i])
isPrim = 1;
for(int j = i; j <= maxi; j += i)
{
if(isPrim)
{
nrDivImp[j]++;
if(j % (i * i) == 0)
v[j] = 1;
}
cnt += fr[j];
}
if(!(nrDivImp[i] % 2))
rez += cnt * (cnt - 1) / 2;
else
rez -= cnt * (cnt - 1) / 2;
}
g << rez;
return 0;
}