用c语言回答从键盘输入两个正整数存储到变量m和n中,用辗转相除法求其最大公约数并输出,输出完数据后换行,不加任何提示信息,请填空完成相应功能。 输入输出样例如下: 输入样例1: 4 8 输出样例1: 4 输入样例2: 17 5 输出样例2: 1
时间: 2024-05-02 17:18:58 浏览: 121
```
#include <stdio.h>
int main() {
int m, n;
scanf("%d%d", &m, &n);
while (n != 0) {
int r = m % n;
m = n;
n = r;
}
printf("%d\n", m);
return 0;
}
```
相关问题
用c语言. 输入两个正整数m和n,求其最大公约数和最小公倍数。利用欧几里德算法求两个正整数的最大公约数,欧几里德算法又称辗转相除法。该算法的要领是:假设两个正整数为a和 b,先求出前者除以后者的余数,存放到变量 r中,若 r不为 0则将b的值得赋给 a,将r的值得赋给 b;再求出a 除以 b的余数,仍然存放到变量 r 中…,如此反复,直至 r 为 0 时终止,此时 b 中存放的即为原来两数的最大公约数。
好的,以下是用 C 语言实现求两个正整数的最大公约数和最小公倍数的代码:
```c
#include <stdio.h>
// 求两个正整数的最大公约数
int gcd(int m, int n) {
int r;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
return m;
}
// 求两个正整数的最小公倍数
int lcm(int m, int n) {
return m * n / gcd(m, n);
}
int main() {
int m, n;
printf("请输入两个正整数m和n:");
scanf("%d%d", &m, &n);
printf("它们的最大公约数为:%d\n", gcd(m, n));
printf("它们的最小公倍数为:%d\n", lcm(m, n));
return 0;
}
```
这个程序中,`gcd` 函数使用了欧几里德算法,而 `lcm` 函数则是通过最大公约数求得的。在主函数中,先输入两个正整数,然后分别调用 `gcd` 和 `lcm` 函数,输出结果即可。
c语言程序 辗转相除法:用户输入2个正整数,输出它们的最大公约数和最小公倍数
好的,以下是该程序的C语言代码:
```c
#include <stdio.h>
int main() {
int num1, num2, a, b, gcd, lcm;
printf("请输入2个正整数,中间用空格隔开:\n");
scanf("%d %d", &num1, &num2);
a = num1;
b = num2;
while (b != 0) {
int tmp = a % b;
a = b;
b = tmp;
}
gcd = a;
lcm = num1 * num2 / gcd;
printf("%d和%d的最大公约数是:%d\n", num1, num2, gcd);
printf("%d和%d的最小公倍数是:%d\n", num1, num2, lcm);
return 0;
}
```
程序首先提示用户输入2个正整数,然后使用辗转相除法求出这两个数的最大公约数。在循环中,变量a和b分别为输入的两个数,每次将b赋值为a%b,a赋值为原来的b,直到b为0为止。最后程序计算出最小公倍数,输出最大公约数和最小公倍数。
阅读全文