Pagini recente » Cod sursa (job #1451777) | Cod sursa (job #2601985) | Cod sursa (job #2600015) | Cod sursa (job #2304841) | Cod sursa (job #290278)
Cod sursa(job #290278)
#include <stdio.h>
#define DIM 1000005
#define ll long long
int c[DIM],p[DIM];
bool ap[DIM];
int n,max;
ll rez;
void read ()
{
int i,nr;
scanf ("%d",&n);
for (i=1; i<=n; ++i)
{
scanf ("%d",&nr);
ap[nr]=1;
if (nr>max)
max=nr;
}
}
void solve ()
{
int i,j;
for (i=2; i<=max; ++i)
for (j=i; j<=max; j+=i)
c[i]+=ap[j];
for (i=2; i<=max; ++i)
if (!p[i])
for (j=2*i; j<=max; j+=i)
if (p[j]!=-1 && j%(i*i))
++p[j];
else
p[j]=-1;
rez=(ll)n*(n-1)/2;
for (i=2; i<=max; ++i)
if (p[i]>=0)
{
if (!p[i])
p[i]=1;
if (p[i]%2)
rez-=(ll)c[i]*(c[i]-1)/2;
else
rez+=(ll)c[i]*(c[i]-1)/2;
}
printf ("%lld",rez);
}
int main ()
{
freopen ("pairs.in","r",stdin);
freopen ("pairs.out","w",stdout);
read ();
solve ();
return 0;
}