输入两个正数m和n,求其最大公约数和最小公倍数c语言
时间: 2024-03-24 09:32:30 浏览: 24
以下是求两个正数m和n的最大公约数和最小公倍数的C语言代码:
```c
#include <stdio.h>
int main() {
int m, n, t, d;
printf("请输入两个数:\n");
scanf("%d%d", &m, &n);
if (m < n) {
t = m;
m = n;
n = t;
}
for (d = n; d >= 1; d--) {
if (n % d == 0 && m % d == 0) {
printf("最大公约数为%d\n", d);
printf("最小公倍数为%d", m * n / d);
break;
}
}
return 0;
}
```
运行结果如下:
```
请输入两个数:
24 36
最大公约数为12
最小公倍数为72
```
解释:首先输入两个正整数m和n,然后通过if语句将m和n的大小进行交换,使得m大于等于n。接着通过for循环从n到1遍历所有可能的最大公约数d,如果n和m都能被d整除,则d为最大公约数,同时通过m * n / d计算出最小公倍数。最后通过printf函数输出结果。
相关问题
c语言写两个函数 分别求两个正数的最大公约数和最小公倍数
好的,下面是两个函数的实现:
```c
// 求最大公约数
int gcd(int a, int b) {
int r;
while (b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
// 求最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
其中,`gcd` 函数使用了辗转相除法来求最大公约数,`lcm` 函数则利用最大公约数求得最小公倍数。请注意,这两个函数的参数都应该是正整数。
使用示例:
```c
int main() {
int a = 12, b = 18;
printf("最大公约数:%d\n", gcd(a, b));
printf("最小公倍数:%d\n", lcm(a, b));
return 0;
}
```
输出结果:
```
最大公约数:6
最小公倍数:36
```
输入两个整数,求最大公约数和最小公倍数
### 回答1:
您好,对于您的问题,可以使用以下代码来求解最大公约数和最小公倍数:
```python
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
return a * b // gcd(a, b)
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
print("最大公约数为:", gcd(num1, num2))
print("最小公倍数为:", lcm(num1, num2))
```
希望能够帮助您解决问题。
### 回答2:
最大公约数也被称为最大公因数,是指能同时整除两个数的最大正整数。最小公倍数则是指能被两个数整除的最小正数。
求最大公约数和最小公倍数的常用方法是使用辗转相除法。
假设输入的两个整数为a和b,首先比较这两个数的大小,假设a较大,则令a与b交换。
1. 辗转相除法求最大公约数:
算法流程如下:
- 若b等于0,则a即为最大公约数。
- 若b不等于0,则将a除以b,得到商q和余数r。
- 令a等于b,b等于r,然后重复以上步骤。
最后停止于b等于0,此时a即为最大公约数。
2. 求最小公倍数:
最小公倍数等于两个数的乘积除以最大公约数。
假设最大公约数为gcd,则最小公倍数为(a*b)/gcd。
总结:
输入两个整数,可以通过辗转相除法求得最大公约数,然后利用最大公约数求得最小公倍数。
### 回答3:
最大公约数是指能够同时整除两个整数的最大正整数。最小公倍数是指两个整数的公共倍数中最小的一个。
方法一:辗转相除法
1. 首先,将输入的两个整数记为a和b。
2. 将a和b分别赋值给两个变量x和y,其中x表示较大的数,y表示较小的数。
3. 依次对x和y取余,将结果赋值给一个新的变量remainder,直到remainder为0。
4. 如果remainder为0,则y即为最大公约数。
5. 最小公倍数等于两个整数的乘积除以最大公约数。
方法二:因式分解法
1. 对于输入的两个整数a和b,分别对它们进行因式分解。
2. 将a和b的所有因子找出来,并统计它们的最高次数。
3. 将相同的因子取最高次数的乘积即为最大公约数。
4. 最小公倍数等于两个整数的乘积除以最大公约数。
举例:
输入a=12,b=18
方法一:辗转相除法
x=18,y=12
18 % 12 = 6
12 % 6 = 0
余数为0,所以最大公约数为6
最小公倍数 = (12 * 18) / 6 = 36
方法二:因式分解法
a=12的因式为2^2 * 3^1
b=18的因式为2^1 * 3^2
最大公约数 = 2^1 * 3^1 = 6
最小公倍数 = (12 * 18) / 6 = 36
综上所述,对于输入的两个整数12和18,最大公约数为6,最小公倍数为36。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)