Pagini recente » Cod sursa (job #2161457) | Cod sursa (job #2089697) | Cod sursa (job #1827539) | Cod sursa (job #727080) | Cod sursa (job #114754)
Cod sursa(job #114754)
#include<stdio.h>
#include<string.h>
FILE*f=fopen("pairs.in","r");
FILE*g=fopen("pairs.out","w");
long x[100003], a[100002], n, rez, Max;
char m[100003];
void read()
{
fscanf(f,"%ld",&n);
memset(m,'0',sizeof(m));
for(int i=1;i<=n;++i)
{
fscanf(f,"%ld",&a[i]),m[a[i]]='1';
if(Max<a[i]) Max=a[i]; }
}
void creez()
{
int i;
int j;
for(i=2;i<=Max;++i)
{
j=1;
while(i*j<=((Max/i))*i)
{
if(m[i*j]=='1') x[i]++;
++j;
}
}
}
void rezolv()
{
long i,j,r,p,ok, X;
for(long k=1;k<=Max;++k)
{
X=k;
p=0;
ok=1;
for(i=2;i*i<=X;++i)
{
if(X%i==0)
{++p;
for(r=0;X%i==0;X=X/i,++r);
if(r>1) { ok=0; break;}
}
}
if(ok==1)
{
if(X>1) p++;
if(p%2==1) rez=rez+(x[k]*(x[k]-1))/2;
else rez=rez-(x[k]*(x[k]-1))/2;
}
}
fprintf(g,"%ld",(n*(n-1)/2)-rez);
}
int main()
{
read();
creez();
rezolv();
return 0;
}