Pagini recente » Cod sursa (job #2427682) | Cod sursa (job #1237596) | Cod sursa (job #1602256) | Cod sursa (job #606299) | Cod sursa (job #3257346)
#include <iostream>
#define int long long
using namespace std;
const int M = 1e6;
int n, ans, fr[M+5], mobius[M+5];
bool prime[M+5];
int32_t main()
{
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
cin.tie(nullptr)->sync_with_stdio(0);
for(int i=1; i<=M; i++)
prime[i] = mobius[i] = 1;
for(int i=2; i<=M; i++)
if(prime[i]) {
for(int j=i; j<=M; j+=i) {
mobius[j] *= -1;
prime[j] = 0;
}
prime[i] = 1;
for(int j=i*i; j<=M; j+=i*i)
mobius[j] = 0;
}
cin >> n;
for(int i=1; i<=n; i++) {
int x;
cin >> x;
fr[x] = 1;
}
for(int i=1; i<=M; i++) {
if(!mobius[i])
continue;
int cnt = 0;
for(int j=i; j<=M; j+=i)
cnt += fr[j];
ans += mobius[i] * cnt * (cnt - 1) / 2;
}
cout << ans;
return 0;
}