Pagini recente » Cod sursa (job #695077) | Cod sursa (job #2870986) | Cod sursa (job #1414761) | Cod sursa (job #408493) | Cod sursa (job #774719)
Cod sursa(job #774719)
#include<fstream>
#include<bitset>
#define dim 1000005
using namespace std;
char C[dim];
ifstream f("pairs.in");
ofstream g("pairs.out");
long long p[dim],X[dim],i,j;
int main (){
long x,n,MAX=0;
long long res=0;
f>>n;
for(i=1;i<=n;i++){
f>>x;
C[x]=1;
if(MAX<x)
MAX=x;
}long long w=0;
w=(long long)(n*(n-1))/2;
for(i=2;i<=MAX;++i){
for(j=i;j<=MAX;j+=i){
X[i]+=C[j];
}
}
for(i=2;i<=MAX;++i) {
if(p[i]==0){
for(j=(long long)i*i;j<=MAX;j+=(long long )i*i)
p[j]=-1;
for(j=i;j<=MAX;j+=i)
if(p[j]>=0)
p[j]++;
}
}
for(i=2;i<=MAX;++i){
if(p[i]>0){
if(p[i]%2)
res+=(long long)((long long )(X[i])*(X[i]-1))/2;
else
res-=(long long)((long long )(X[i])*(X[i]-1))/2;
}
}
g<<w-res<<"\n";
return 0;
}