Pagini recente » Cod sursa (job #1068434) | Cod sursa (job #3153816) | Cod sursa (job #2298127) | Cod sursa (job #2377417) | Cod sursa (job #2314586)
#include <stdio.h>
#include <stdlib.h>
#include<stdio.h>
int fr[1000020], c[1000020] , v[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;
fscanf(f, "%lld", &n);
for(long long i = 1; i <= n; i++)
{
fscanf(f, "%d", &v[i]);
if(v[i] > maxi)
maxi = v[i];
c[v[i]] = 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 ;
}