最大公约数

题目描述

给定n对正整数ai,bi,请你求出每对数的最大公约数。

输入

第一行包含整数n。

接下来n行,每行包含一个整数对ai,bi

输出

输出共n行,每行输出一个整数对的最大公约数。

样例输入 Copy

2
3 6
4 6

样例输出 Copy

3
2

提示

1 ≤ n ≤ 1e5
1 ≤ ai,bi ≤ 2e9
 

解释

运用辗转相除法/欧几里得算法
例如求12921与4234的最大公约数,那么
1.(12921,4234)= (4234,219)
2.(4234,219)=(219,73)
3.(219,73)=(73,0)
出现了0,计算结束,最大公约数就是37

 

 

#include<iostream>
using namespace std;

typedef long long LL;

LL gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

int main()
{
    int n;
    scanf("%d", &n);
    while (n--)
    {
        LL a, b;
        scanf("%lld%lld", &a, &b);
        printf("%lld\n", gcd(a, b));
    }

    return 0;
}

 

posted @ 2022-03-01 21:36  ora12321  阅读(32)  评论(0)    收藏  举报