这道题是关于两个数的最大公约数和最小公倍数的题目。给你两个数字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; }
时间: 2024-10-28 13:36:51