Pagini recente » Cod sursa (job #1218820) | Cod sursa (job #786070) | Cod sursa (job #1574871) | Profil cristina_ana_tdr | Cod sursa (job #1316099)
#include <stdio.h>
#define MAXP 1000000
#define MAXK 7
int e[MAXK], c[MAXP+1];
inline long long gauss(int x){
return x*(long long)(x+1)/2LL;
}
int main(){
int n, p, t, i, j, k, div, semn;
long long ans;
FILE *fin, *fout;
fin=fopen("pairs.in", "r");
fout=fopen("pairs.out", "w");
fscanf(fin, "%d", &n);
for(t=0; t<n; t++){
fscanf(fin, "%d", &p);
div=2;
k=0;
while(div*div<=p){
if(p%div==0){
e[k++]=div;
while(p%div==0){
p/=div;
}
}
div++;
}
if(p!=1){
e[k++]=p;
}
for(i=1; i<(1<<k); i++){
p=1;
semn=1;
for(j=0; j<k; j++){
if(((1<<j)&i)!=0){
p*=e[j];
semn*=-1;
}
}
c[p]+=semn;
}
}
ans=gauss(n-1);
for(i=2; i<=MAXP; i++){
if(c[i]<0){
ans-=gauss(-c[i]-1);
}else{
ans+=gauss(c[i]-1);
}
}
fprintf(fout, "%lld\n", ans);
fclose(fin);
fclose(fout);
return 0;
}