数论 UVA 11388

这道题是关于两个数的最大公约数和最小公倍数的题目。给你两个数字g,l,分别表示最大公约数和最小公倍数。要求你找到两个数a,b,要求这两个数的最大公约数和最小公倍数为所给的两个数。如果存在多组数字符合这一条件,

就输出a最小的那一组数字。由最大公约数和最小公倍数与两个数的关系可得,a*b=l*g,g<=a,b<=l,a%g==b%g==0,l%a==l%b==0。则所要求的a最小的那组数据,其实就是当a==g时所求出的那组数据。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int g,l,t;
    scanf("%d",&t);
    while(t--)
    {
        int x;
        scanf("%d%d",&g,&l);
        if(g>l)
        {
            x=g;
            g=l;
            l=x;
        }
        int a,b;
        if(l%g==0)
        {
            a=g;
            b=l;
            printf("%d %d
",a,b);
        }
        else
            printf("-1
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/hbutACMER/p/4225729.html