Pagini recente » Cod sursa (job #178849) | Cod sursa (job #1573521) | Cod sursa (job #2332212) | Cod sursa (job #1723244) | Cod sursa (job #112058)
Cod sursa(job #112058)
#include<stdio.h>
int x[100001];
unsigned int gcd(unsigned int u, unsigned int v)
{
int shift;
/* GCD(0,x) := x */
if (u == 0 || v == 0)
return u | v;
/* Let shift := lg K, where K is the greatest power of 2
dividing both u and v. */
for (shift = 0; ((u | v) & 1) == 0; ++shift) {
u >>= 1;
v >>= 1;
}
while ((u & 1) == 0)
u >>= 1;
/* From here on, u is always odd. */
do {
while ((v & 1) == 0) /* Loop X */
v >>= 1;
/* Now u and v are both odd, so diff(u, v) is even.
Let u = min(u, v), v = diff(u, v)/2. */
if (u <= v) {
v -= u;
} else {
int diff = u - v;
u = v;
v = diff;
}
v >>= 1;
} while (v != 0);
return u << shift;
}
int main()
{
FILE *fin,*fout;
int i,j,n,k,ext,perechi=0;
fin=freopen("pairs.in","r",stdin);
fout=freopen("pairs.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
for(j=1;j<i;j++)
{
if(gcd(x[i],x[j])==1) {
perechi++;
}
}
}
printf("%d",perechi);
fclose(fin);
fclose(fout);
return 0;
}