Pagini recente » Cod sursa (job #565218) | Cod sursa (job #1547022) | Cod sursa (job #2806363) | Cod sursa (job #1233173) | Cod sursa (job #419275)
Cod sursa(job #419275)
#include <iostream>
using namespace std;
#define LL long long
int N, M, NR[1000001], X[1000001];
bool A[1000001];
long long sol;
int main() {
FILE *f1=fopen("pairs.in", "r"), *f2=fopen("pairs.out", "w");
int i, j, p, q;
fscanf(f1, "%d", &N);
for(i=1; i<=N; i++) {
fscanf(f1, "%d", &j);
A[j]=1; M=max(M, j);
}
for(i=2; i<=M; i++) {
for(j=i; j<=M; j+=i) {
if(A[j]) { X[i]++; }
}
}
for(i=2; i<=M; i++) {
if(!NR[i]) {
p=i*i;
for(j=p; j<=M; j+=p) { NR[j]=-1; }
for(j=i; j<=M; j+=i) {
if(NR[j]>-1) { NR[j]++; }
}
}
}
for(i=2; i<=M; i++) {
if(NR[i]) {
if(NR[i]%2) { sol+=(LL)(X[i]*(X[i]-1)/2); }
else { sol-=(LL)(X[i]*(X[i]-1)/2); }
}
}
fprintf(f2, "%lld\n", (LL)((LL)(N*(N-1)/2)-(LL)sol));
fclose(f1); fclose(f2);
return 0;
}