Description | ||
|
有多个测试用例,每行两个正整数x,y,保证x*y不超过2^31-1。如果x与y都为0,则输入结束。 每行输出一个测试用例的结果,即x与y的最小公倍数。(最后一行有回车) | ||
Sample Input | ||
4 5 3 6 0 0 | ||
Sample Output | ||
20 6 |
#include<stdio.h>
//可知 a,b 则 a*b== gcd(a,b)*lcm(a,b)
//求最大公因数gcd
int gcd(int a,int b)
{
int t;
while(b>0)
{
t=a%b;
a=b;
b=t;
}
return a;
}
int main()
{
int x,y;
while(scanf("%d %d",&x,&y)!=EOF&&(x!=0||y!=0))
{
printf("%d\n",x*y/gcd(x,y));
}
return 0;
}
这是一个C++程序,用于读取多个测试用例中的两个正整数x和y,计算它们的最小公倍数(LCM)。程序首先定义了一个计算最大公约数(GCD)的函数gcd,然后在主函数中利用欧几里得算法找到GCD,并通过x*y/GCD得到LCM。当输入的x和y都为0时,输入结束。示例输入包括45和36,输出为它们的LCM,即20和6。
1516

被折叠的 条评论
为什么被折叠?



