最大公约数,水题
本题要点:
1、步骤:
先假设 a > b, 因为 gcd(a, c) = b, 因此
gcd(a / b, c / b) = 1, 从 c / b = 2 开始扫描,找到第一个
使得 gcd(a / b, c / b) = 1 的 c / b 的值,就是答案。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int a, b, c, T;int gcd(int x, int y)
{
return y == 0? x : gcd(y, x % y);
}void solve()
{
if(a < b)swap(a, b);int a1 = a / b, c1 = 2;while(gcd(a1, c1) > 1){
++c1;}printf("%d\n", c1 * b);
}int main()
{
scanf("%d", &T);while(T--){
scanf("%d%d", &a, &b);solve();}return 0;
}/* 2 6 2 12 4 *//* 4 8 */