最大公约数和最小公倍数输入两个正整数m和n,求其最大公约数和最小公倍数
时间: 2023-11-22 22:06:10 浏览: 216
最大公约数是指两个或多个整数共有约数中最大的一个,最小公倍数是指两个或多个整数公有的倍数中最小的一个。在计算最大公约数和最小公倍数时,可以使用辗转相除法和两数之积除以它们的最大公约数的方法来求解。 辗转相除法是指用较大的数除以较小的数,再用较小的数去除以余数,直到余数为0为止,此时较小的数就是最大公约数。最小公倍数可以通过两数之积除以它们的最大公约数来求解。 下面是一个C语言的示例代码,用于计算输入的两个正整数的最大公约数和最小公倍数:
#include <stdio.h>
int main() {
int a, b, t, r, n;
printf("请输入两个数字:\n");
scanf("%d %d", &a, &b);
if (a < b) {
t = b;
b = a;
a = t;
}
r = a % b;
n = a * b;
while (r != 0) {
a = b;
b = r;
r = a % b;
}
printf("这两个数的最大公约数是%d,最小公倍数是%d\n", b, n / b);
return 0;
}
相关问题
C语言实现求两数的最大公约数和最小公倍数 输入两个正整数m和n,求其最大公约数和最小公倍数
以下是两种C语言实现求两数的最大公约数和最小公倍数的方法:
- 碾转相除法
#include <stdio.h>
#include <math.h>
int main() {
int m, n, i, temp, temp1;
printf("输入两个整数以,隔开\n");
scanf("%d,%d", &m, &n);
temp1 = m * n; //两数的积
i = n;
if (n > m) { //判断大数做被除数
temp = m;
m = n;
n = temp;
}
while (n != 0) {
temp = m % n; //碾转相除法得最小公倍数
m = n;
n = temp;
}
printf("最小公倍数:%d\n", m);
printf("最大公约数:%d", temp1 / m);
return 0;
}
- 分解质因数法
#include <stdio.h>
#include <math.h>
int main() {
int m, n, s, i;
scanf("%d,%d", &m, &s);
printf("%d,%d 的最大公约数是:", m, s);
n = (m > s) ? s : m;
for (i = n; i > 0; i--) {
if ((m % i != 0) || (s % i != 0)) continue;
printf("%2d\n", i);
printf("最小公倍数%5d", m * s / i);
return 0;
}
return 0;
}
输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35
以下是 Python 代码实现:
m, n = map(int, input().split())
# 求最大公约数
def gcd(a, b):
if a < b:
a, b = b, a
while b != 0:
r = a % b
a = b
b = r
return a
# 求最小公倍数
def lcm(a, b):
return a * b // gcd(a, b)
print(gcd(m, n), lcm(m, n))
输出结果为:
1 35