Pagini recente » Cod sursa (job #926090) | Cod sursa (job #1420557) | Cod sursa (job #339082) | Cod sursa (job #1810285) | Cod sursa (job #1982599)
#include <fstream>
using namespace std;
int n, mx, nrd[1000001];
bool inM[1000001];
int main(){
int i, j, x;
long long r, q;
ifstream fin ("pairs.in");
fin >> n;
for (i=0; i<n; i++){
fin >> x;
inM[x]=true;
mx=max(mx, x);
}
fin.close();
nrd[0]=nrd[1]=-1;
for (i=2; i<=mx; i++)
if (nrd[i]==0){
for (j=i; j<=mx; j+=i)
nrd[j]++;
}
for (i=2; i*i<=mx; i++)
for (j=i*i; j<=mx; j+=i*i)
nrd[j]=-1;
r=0;
for (i=1; i<=mx; i++)
if (nrd[i]!=-1){
q=0;
for (j=i; j<=mx; j+=i)
if (inM[j]==true)
q++;
q=(q-1)*q/2;
if (nrd[i]%2==0)
r-=q;
else
r+=q;
}
ofstream fout ("pairs.out");
fout << 1LL*n*(n-1)/2-r << '\n';
fout.close();
return 0;
}