举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
代码:
#include <stdio.h>
int main(void)
{
int gcd, lcm, m, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
{ printf("m <= 0 or n <= 0");
continue;
}
for(gcd=m; gcd >= 1; gcd--){
if(m % gcd == 0 && n % gcd == 0) break;
}
lcm = m * n / gcd;
printf("%d, %d\n",lcm, m, n, gcd, m, n);
}
}
运行效果:
输入输出示例:括号内为说明
输入:
3(repeat=3)
37(m=3,n=7)
244(m=24,n=4)
2418(m=24,n=18)
输出:
21,1.
24,4.
72,6.
扩展资料:
辗转相除法:
#include <stdio.h>
int main()
{
int m,n;
scanf("%d %d",&a,&b); //输入两个整数
int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量
if(a>=b) {num1=a; num2=b; }
else {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算
while(num2>0){
c=num1%num2;
num1=num2;
num2=c;}//辗转相除,num2=0时,num1=最大公因数
printf("最大公因数:%d\n",num1);
printf("最小公倍数:%d\n"m*n/num1);
return 0;
}