输入两个正整数m,n,输出其最大公约数
时间: 2024-05-13 22:20:56 浏览: 14
可以使用辗转相除法(欧几里得算法)求解最大公约数,具体过程如下:
1. 用较小的数去除较大的数,如果可以整除,则较大的数除以较小的数,将余数记为r;
2. 接下来用刚才的余数去除较小的数,如果可以整除,则较小的数除以余数,将新的余数记为r;
3. 重复第2步,直到余数为0,此时较小的数即为最大公约数。
代码实现如下:
```python
def gcd(m, n):
if m < n:
m, n = n, m
while n != 0:
r = m % n
m = n
n = r
return m
```
其中,第一行代码是为了保证m大于等于n,方便后续的计算。在while循环中,不断用n去除m,将余数记为r,然后将n赋值为r,继续循环,直到余数为0,此时的n即为最大公约数。
相关问题
C语言键盘输入两个正整数m,n计算并输出其最大公约数
您好,以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int m, n, i, gcd;
printf("请输入两个正整数m和n:\n");
scanf("%d %d", &m, &n);
for (i = 1; i <= m && i <= n; i++) {
if (m % i == 0 && n % i == 0) {
gcd = i;
}
}
printf("最大公约数为:%d\n", gcd);
return 0;
}
```
代码思路:
1. 首先,我们通过 `scanf` 函数从键盘输入两个正整数 `m` 和 `n`;
2. 然后,我们使用 `for` 循环从 1 开始,逐个判断 `i` 是否是 `m` 和 `n` 的公约数;
3. 如果 `i` 是 `m` 和 `n` 的公约数,则将其赋值给变量 `gcd`;
4. 循环结束后,我们输出变量 `gcd` 的值,即为 `m` 和 `n` 的最大公约数。
希望可以帮到您!
输入两个正整数m和n求最大公约数
以下是两种求解两个正整数m和n最大公约数的方法:
1.使用辗转相除法
```python
def gcd(m, n):
while n != 0:
m, n = n, m % n
return m
# 示例
print(gcd(24, 36)) # 输出:12
```
2.使用for循环
```python
def gcd(m, n):
for i in range(min(m, n), 0, -1):
if m % i == 0 and n % i == 0:
return i
# 示例
print(gcd(24, 36)) # 输出:12
```