您的位置:首页 > 其它

HDU 2504 又见GCD

2014-09-19 14:27 267 查看
Problem Description

有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。



Input

第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。



Output

输出对应的c,每组测试数据占一行。



Sample Input

2

6 2

12 4



Sample Output

4

8

说明:

b是a和c的最大公约数,但是c和b不相等。所以可以c=2*b, 3*b, `````````````` n*b判断,带入到gcd函数中进行结果的判断。

//	C语言的代码
#include <stdio.h>
#include <stdlib.h>
int gcd(int a, int b)
{
    int r = 1;
    while(r)
    {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}
int main(void)
{
    int t, a, b, c;
    while(scanf("%d", &t) != EOF)
    {
        while(t--)
        {
            scanf("%d%d", &a, &b);
            c = 2 * b;
            while(gcd(c, a) != b)
            c += b;
            printf("%d\n", c);
        }
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: