今天,和大家分享一道关于求最大公约数和最小公倍数的题。关于最大公约数和最小公倍数可以算是一个学编程语言常见的题目,这里我和大家分享两种解法,循环法和辗转相除法。我们先看一下题目:输入两个数,求最大公约数和最小公倍数。在这里,我们假定输入的两个数是整数。
首先,我们来看循环法,实现代码如下:
int a = 0, b = 0;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
int max = a > b ? a : b;
int min = a < b ? a : b;
//求最大公约数
for (int i = min; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
printf("最大公约数为:%d\n", i);
break;
}
}
//求最小公倍数
for (int i = max; i <= a * b; i++) {
if (i % a == 0 && i % b == 0) {
printf("最大公约数为:%d\n", i);
break;
}
}我们再看一下辗转相除法的代码实现:
int a = 0, b = 0;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
int tempA = a;
int tempB = b;
int temp = tempA % tempB;
while (temp) {
tempA = tempB;
tempB = temp;
temp = tempA % tempB;
}
printf("最大公约数为:%d\n", tempB);
printf("最小公倍数为:%d\n", a * b / tempB);
关于这两种方法的思想我就不多说了,我谈一下自己对这两种方法的比较吧,循环法和辗转相除法相比,循环法更好理解一些,从代码实现上来说,辗转相除法更简洁一些,运行效率更高一些