Pagini recente » Cod sursa (job #387181) | Cod sursa (job #1080342) | Cod sursa (job #325893) | Cod sursa (job #2955275) | Cod sursa (job #1982429)
#include <fstream>
using namespace std;
ifstream fin ("pairs.in");
ofstream fout ("pairs.out");
int n, f[1000001], v[1000001], c[1000001];
long long maxim;
int main()
{
fin >> n;
int nr;
for (int i=1; i<=n; i++)
{
fin >> nr;
if (nr > maxim)
maxim = nr;
f[nr] ++;
}
fin.close();
for (int i=1; i<=maxim; i++)
for (int j=1; j*i <=maxim; j++)
v[i] += f[j*i];
for (int i=2; i<=maxim; i++)
if (c[i] == 0)
for (int j=1; j*i<=maxim; j++)
if (j % i != 0)
c[j*i] ++;
else c[j*i] = -1;
int res = 0;
for (int i=1; i<=maxim; i++){
if (c[i] % 2 == 1 && c[i] > 0)
res = res + v[i]*(v[i]-1)/2;
if (c[i] % 2 == 0 && c[i] > 0)
res = res + v[i]*(v[i]-1)/2;
}
fout << n*(n-1)/2 - res;
return 0;
}