Pagini recente » Cod sursa (job #2490887) | Cod sursa (job #3183109) | Cod sursa (job #1697606) | Cod sursa (job #1704801) | Cod sursa (job #2774242)
#include <bits/stdc++.h>
#define DIM 1000005
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n, nrDivP[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 = 1LL * n * (n - 1) / 2;
for(int i = 2; i <= maxi; i++)
if(!v[i])
{
long long cnt = 0 ;
bool isPrim = 0;
if(!nrDivP[i])
isPrim = 1;
for(int j = i; j <= maxi; j += i)
{
if(isPrim)
{
nrDivP[j]++;
if(j % (i * i) == 0)
v[j] = 1;
}
cnt += fr[j];
}
if(nrDivP[i] % 2 == 0)
rez += cnt * (cnt - 1) / 2;
else
rez -= cnt * (cnt - 1) / 2;
}
g << rez;
return 0;
}