c语言输入mn输出最大公约数
时间: 2023-09-01 09:11:22 浏览: 97
可以使用辗转相除法来求解最大公约数。具体操作如下:
1. 读入两个数 m 和 n。
2. 如果 m 小于 n,则交换 m 和 n。
3. 用 n 去除 m,如果余数为 0,则 n 即为最大公约数,程序结束。
4. 如果余数不为 0,则用上一步的余数去除 n,如果余数为 0,则上一步的余数即为最大公约数,程序结束。
5. 如果余数不为 0,则重复步骤 3 和 4。
下面是对应的 C 语言代码实现:
```
#include <stdio.h>
int main()
{
int m, n, r;
printf("请输入两个正整数:");
scanf("%d%d", &m, &n);
while (n != 0)
{
r = m % n;
m = n;
n = r;
}
printf("最大公约数为:%d\n", m);
return 0;
}
```
这个程序中,用变量 r 记录每次相除的余数,用 m 和 n 分别记录两个数的值,如果 n 不为 0,则进行辗转相除,直到 n 为 0,最后输出 m 即为最大公约数。
相关问题
c语言输入mn求最大公约数和最小公倍数
好的,我可以回答您的问题。以下是C语言代码实现:
```c
#include<stdio.h>
int gcd(int m, int n); // 最大公约数
int main()
{
int m, n, gcf, lcm;
printf("请输入两个正整数m、n:");
scanf("%d %d", &m, &n);
gcf = gcd(m, n);
lcm = m * n / gcf; // 最小公倍数等于两数相乘除以最大公约数
printf("%d和%d的最大公约数是%d,最小公倍数是%d", m, n, gcf, lcm);
return 0;
}
int gcd(int m, int n)
{
if (n == 0) // 如果余数为0,返回m即为最大公约数
{
return m;
}
else // 递归求解
{
return gcd(n, m % n);
}
}
```
c语言求mn的最大公约数
以下是使用辗转相除法求解mn的最大公约数的C代码:
```
#include <stdio.h>
int gcd(int m, int n) {
int remainder = m % n;
while (remainder != 0) {
m = n;
n = remainder;
remainder = m % n;
}
return n;
}
int main() {
int m, n;
printf("请输入两个正整数m和n:");
scanf("%d %d", &m, &n);
int result = gcd(m, n);
printf("%d和%d的最大公约数是%d\n", m, n, result);
return 0;
}
```
在该代码中,定义了一个名为`gcd`的函数,该函数接受两个参数m和n,返回它们的最大公约数。在函数中,使用辗转相除法,不断计算余数并将m和n更新为n和余数来求解最大公约数。在`main`函数中,用户输入两个正整数m和n,然后调用`gcd`函数求解它们的最大公约数并将结果打印输出。
阅读全文