Pagini recente » Cod sursa (job #1814939) | Cod sursa (job #2201859) | Cod sursa (job #1517507) | Cod sursa (job #2314583)
#include <stdio.h>
#include <stdlib.h>
#include<stdio.h>
int fr[1000020], c[1000020];
int main()
{
FILE *f = fopen("pairs.in", "r+");
FILE *g = fopen("pairs.out", "w+");
long long n, sol = 0, maxi = 0;
long long t = 0 , x ;
fscanf(f, "%lld", &n);
for(long long i = 1; i <= n; i++)
{
fscanf(f, "%d", &x);
if(x > maxi)
maxi = x;
c[x] = 1;
}
for(long long i = 2; i < maxi; i++)
{
if(fr[i] == 0)
{
for(long long j = i; j <= maxi; j = j + i)
fr[j]++;
}
}
for(long long i = 2; i * i <= maxi; i++)
{
for(long long j = i * i; j <= maxi; j = j + i * i)
fr[j] = -1;
}
for(long long i = 2; i <= maxi; i++)
{
if(fr[i] == -1)
continue;
long long nr = 0;
for(long long j = i; j <= maxi; j = j+ i)
{if(c[j] == 1)
nr++;}
t = nr * (nr - 1) / 2;
if(fr[i] % 2 == 0)
sol = sol - t;
else sol = sol + t;
}
t = n * (n - 1) / 2;
fprintf(g, "%lld", t - sol);
return 0 ;
}