Pagini recente » Cod sursa (job #2990679) | Cod sursa (job #1573972) | Cod sursa (job #1672463) | Cod sursa (job #1299234) | Cod sursa (job #2513557)
#include <cstdio>
#include <iostream>
#define dbg(x) cerr << #x << ": " << x << endl;
#define NMAX 100005
using namespace std;
long long nrBad;
int v[NMAX], nrD[NMAX * 10], maxx, X[NMAX * 10];
bool viz[NMAX * 10], exist[NMAX * 10];
int main(){
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
int n;
cin >> n;
for(int i = 1; i <= n; ++i){
cin >> v[i];
maxx = max(maxx, v[i]);
exist[v[i]] = 1;
}
long long nrPerechiNonBune = 0;
for(int i = 2; i <= maxx; ++i)
if(nrD[i] == 0){
long long cnt = 0, cnt2 = 0;
for(int j = i; j <= maxx; j += i)
{
nrD[j]++;
if(j % (i * i) == 0)
viz[j] = 1;
}
}
for(int i = 2; i <= maxx; ++i){
int cnt = 0;
for(int j = i; j <= maxx; j += i)
if(exist[j])
++cnt;
X[i] = cnt;
}
long long rez = 0;
for(int i = 2; i <= maxx; ++i)
if(!viz[i]){
if(nrD[i] % 2 == 0)
rez -= ((X[i] - 1) * X[i]) / 2;
else rez += ((X[i] - 1) * X[i]) / 2;
}
cout << (1LL * (n - 1) * n) / 2 - rez << '\n';
return 0;
}