1.非递归法
#include <stdio.h>
int main() {
int GCD(int a, int b);
int LCM(int a, int b, int m);
int a, b;
int m, n;
scanf("%d %d", &a, &b);
m = GCD(a, b);
n = LCM(a, b, m);
printf("GCD=%d\nLCM=%d\n", m,n);
return 0;
}
int GCD(int m, int n) {
int temp;
int a, b;
if (m > n) {
a = m;
b = n;
}
else {
a = n;
b = m;
}
do {
temp = a % b;
a = b;
b = temp;
} while (b != 0);
return a;
}
int LCM(int a, int b, int m) {
int k;
k = (a / m) * b;
return k;
}
2.递归法
#include <stdio.h>
int main() {
int GCD(int a, int b);
int LCM(int a, int b, int m);
int a, b;
int m, n;
scanf("%d %d", &a, &b);
m = GCD(a, b);
n = LCM(a, b, m);
printf("GCD=%d\nLCM=%d\n", m,n);
return 0;
}
int GCD(int m, int n) {
int temp;
int a, b;
if (m > n) {
a = m;
b = n;
}
else {
a = n;
b = m;
}
temp = a % b;
if (temp != 0)
GCD(b, temp);
else
return b;
}
int LCM(int a, int b, int m) {
int k;
k = (a / m) * b;
return k;
}