Pagini recente » Cod sursa (job #1502295) | Cod sursa (job #1481436) | Cod sursa (job #832144) | Cod sursa (job #2502004) | Cod sursa (job #2465681)
#include <bits/stdc++.h>
#define NMAX 100009
#define ll long long
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
bitset <NMAX> este, fact;
int ciur[NMAX];
int n, x, maxim;
ll ans;
int main()
{
f >> n;
for(int i = 1; i <= n; ++i)
{
f >> x;
maxim = max(maxim, x);
este[x] = 1;
}
for(int i = 2; i <= maxim; ++i)
if(!ciur[i])
{
for(int j = i; j <= maxim; j += i)
{
ciur[j]++;
if(j % (i * i) == 0)
fact[j] = 1;
}
}
for(int i = 2; i <= maxim; ++i)
if(fact[i] == 0)
{
ll cat = 0;
for(int j = i; j <= maxim; j += i)
cat += (este[j] == true );
if(ciur[i] % 2 == 1)
ans += cat * (cat - 1) /2;
else
ans -= cat * (cat - 1) /2;
}
g << n * (n - 1) / 2 - ans;
f.close();
g.close();
return 0;
}