当前位置: 代码迷 >> 综合 >> HOJ 2504 又见GCD(最大公约数,水题)
  详细解决方案

HOJ 2504 又见GCD(最大公约数,水题)

热度:76   发布时间:2023-12-13 19:18:54.0

最大公约数,水题
本题要点:
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 */