Pagini recente » Cod sursa (job #510284) | Cod sursa (job #1730506) | Cod sursa (job #84250) | Cod sursa (job #88206) | Cod sursa (job #109566)
Cod sursa(job #109566)
#include <cstdio>
const int maxn = 100001;
const int maxp = 2000;
FILE *in = fopen("pairs.in","r"), *out = fopen("pairs.out","w");
int n;
int a[maxn];
int k;
char x[maxp];
int primes[maxp];
void ciur()
{
primes[++k] = 2;
for ( int i = 4; i <= maxp; i += 2 )
x[i] = 'x';
for ( int i = 3; i <= maxp; i += 2 )
if ( x[i] != 'x' )
{
primes[++k] = i;
for ( int j = i+i; j <= maxp; j += i )
x[j] = 'x';
}
}
int h[maxp]; // h[i] = cate numere au ca factor prim i
int tk[maxn];
void read()
{
fscanf(in, "%d", &n);
for ( int i = 1; i <= n; ++i )
{
fscanf(in, "%d", &a[i]);
// for ( int j = 1; primes[j] <= a[i] && j <= k; ++j )
// if ( a[i] % primes[j] == 0 )
// ++h[ primes[j] ];
}
}
int cmmdc(int a, int b)
{
// if ( b == 0 )
// return a;
//
// return cmmdc(b, a % b);
int r = 0;
while ( b )
{
r = b;
b = a % b;
a = r;
}
return a;
}
int main()
{
// ciur();
read();
long long cnt = 0;
int temp = 0;
for ( int i = 1; i <= n; ++i )
for ( int j = i+1; j <= n; ++j )
if ( cmmdc(a[i], a[j]) == 1 )
++cnt;
//
// printf("%d\n", cnt);
// cnt = 0;
//
// for ( int i = 1; i <= n; ++i )
// {
// temp = n - i;
//
// for ( int j = 1; primes[j] <= a[i] && j <= k; ++j )
// if ( a[i] % primes[j] == 0 )
// temp = temp - h[ primes[j] ] + 1, --h[ primes[j] ];
//
// //printf("%d %d\n", a[i], temp);
// cnt += temp;
// }
//
fprintf(out, "%lld\n", cnt);
return 0;
}