首页 > 代码库 > 数论 UVA 11388

数论 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\n",a,b);        }        else            printf("-1\n");    }    return 0;}

数论 UVA 11388