功能:求最大公约数以及最小公倍数。
下面代码中有些许错误,请进行改错。
代码里有点错误,修改如下所示:
#include<stdio.h>
int main()
{
int m,n,m1,n1,a;
scanf("%d %d", &m, &n);
m1=m;
n1=n;
a = 0;
while (a=m1 % n1)
{
m1 = n1;
n1 = a;
}
printf("最大公约数为:%d\n", a);
printf("最大公倍数为:%d\n", (m*n/a));
return 0;
}
第7行用=,两个赋值之间用半角逗号
C语言中可以使用辗转相除法(欧几里得算法)来求最大公约数,使用公式GCD(a,b)=GCD(b,a%b)来递归求解。
代码示例:
#include <stdio.h>
int GCD(int a, int b) {
if (b == 0) {
return a;
} else {
return GCD(b, a % b);
}
}
int LCM(int a, int b) {
return a * b / GCD(a, b);
}
int main() {
int a, b;
printf("请输入两个正整数:\n");
scanf("%d %d", &a, &b);
printf("最大公约数为:%d\n", GCD(a, b));
printf("最小公倍数为:%d\n", LCM(a, b));
return 0;
}
输入示例:
请输入两个正整数:
8 12
输出示例:
最大公约数为:4
最小公倍数为:24