Pagini recente » Cod sursa (job #692189) | Cod sursa (job #2944880) | Cod sursa (job #1635527) | Cod sursa (job #1183315) | Cod sursa (job #112262)
Cod sursa(job #112262)
#include<fstream.h>
long v[100001],x[1000001],pc[1000001];
int main(){
long n;
long i,j,p,res=0,q,k,t;
long max;
pc[0]=2;
pc[1]=2;
pc[2]=3;
ifstream f("pairs.in");
ofstream g("pairs.out");
f>>n;
max=-1;
for(i=1;i<=n;i++){ f>>q;
v[q]=1; if(q>max) max=q;
}
for(i=2;i<=max;i++){
for(j=1;j<=max/i;j++){
if(v[i*j]==1) x[i]++;
}
}
i=2;
for(i=2;i<=max;i++){
p=i;
if(x[p]){
t=0;
for(k=1;k<=pc[0];k++)
if(p%pc[k]==0){ if((p/pc[k])%pc[k]==0){ t=-1; break;}
t++; p=p/pc[k];}
if(t==0){res=res+(x[i]*(x[i]-1))/2; pc[0]++; pc[pc[0]]=i;}
else{
if(p==1) { if(t>0 && t%2==0) res=res-(x[i]*(x[i]-1))/2;
else if(t>0) res=res+(x[i]*(x[i]-1))/2;
}
}
}
}
g<<n*(n-1)/2 - res;
f.close();
g.close();
return 0;
}