最大公约数
题目描述
给定n对正整数ai,bi,请你求出每对数的最大公约数。
输入
第一行包含整数n。
接下来n行,每行包含一个整数对ai,bi。
输出
输出共n行,每行输出一个整数对的最大公约数。
样例输入 Copy
2
3 6
4 6
样例输出 Copy
3
2
提示
1 ≤ n ≤ 1e5
1 ≤ ai,bi ≤ 2e9
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;
}

浙公网安备 33010602011771号