Pagini recente » Cod sursa (job #2455936) | Cod sursa (job #2182701) | Cod sursa (job #1759381) | Cod sursa (job #938462) | Cod sursa (job #2378252)
#include <stdio.h>
unsigned int gcd(unsigned int u, unsigned int v)
{
unsigned t;
int shift;
if (u == 0) return v;
if (v == 0) return u;
shift = __builtin_ctz(u | v);
u >>= __builtin_ctz(u);
do {
v >>= __builtin_ctz(v);
if (u > v) {
t = v;
v = u;
u = t;
}
v = v - u;
} while (v != 0);
return u << shift;
}
int main(void)
{
freopen("euclid2.in", "r", stdin);
freopen("euclid2.out", "w", stdout);
unsigned T, A, B;
scanf("%d", &T);
for (; T; --T)
{
scanf("%d %d", &A, &B);
printf("%d\n", gcd(A, B));
}
return 0;
}