用C语言写2输出两个数的最大公约数。算法: 《I3 输入两个整数 m,五,并求 m除以 五的余数上。+ §2> 当 k大日,将除数 五 作为被除数 四,余数上 作为除数 卫,继续求 血 除以口 的余数k;反 复 做第《2〉玄,直到余数为 。结束循环。 1(3〉 结束铺环后,除数 工就是 五 与工的最大公约数。请根据算法写出完整的程序,并编译、 运行、检查结果的正确性。
时间: 2023-05-12 11:07:27 浏览: 57
以下是用C语言写的求两个数的最大公约数的程序:
```c
#include <stdio.h>
int main() {
int m, n, r;
printf("请输入两个整数:\n");
scanf("%d %d", &m, &n);
while (n != 0) {
r = m % n;
m = n;
n = r;
}
printf("最大公约数为:%d\n", m);
return 0;
}
```
算法中的步骤已经在程序中实现了,输入两个整数后,程序会通过循环不断求余数,直到余数为0,此时除数m就是这两个数的最大公约数。编译运行后,可以输入任意两个整数进行测试,程序会输出它们的最大公约数。
相关问题
输入两个正整数m和n,求其最大公约数和最小公倍数,用c语言写出这段代码
以下是通过 C 语言编写的求最大公约数和最小公倍数的代码:
#include <stdio.h>
int main() {
int m, n, gcd, lcm, a, b, temp;
printf("请输入两个正整数m和n:\n");
scanf("%d %d", &m, &n);
a = m;
b = n;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
gcd = a;
lcm = m * n / gcd;
printf("最大公约数为:%d,最小公倍数为:%d\n", gcd, lcm);
return 0;
}
进一步说明:
以上代码可以通过辗转相除法(欧几里得算法)求解最大公约数,然后通过两个数的乘积除以最大公约数求得最小公倍数。在代码中,先输入两个数,然后通过 while 循环将两个数依次赋值给 a 和 b,直到 b 为 0,此时 a 就是它们的最大公约数。求出最大公约数后,将两个数的乘积除以最大公约数即可得到最小公倍数。
求输入的两个整数的最大公约数和最小公倍数的C语言算法具体步骤
好的,以下是求输入的两个整数的最大公约数和最小公倍数的C语言算法具体步骤:
1. 输入两个整数a和b。
2. 求a和b的最大公约数。
- 用辗转相除法,将a除以b,得到余数c,如果c等于0,则b就是最大公约数;否则,将b赋值给a,c赋值给b,重复上述步骤,直到c等于0。
3. 求a和b的最小公倍数。
- 最小公倍数等于a和b的积除以它们的最大公约数,即(a*b)/最大公约数。
4. 输出a和b的最大公约数和最小公倍数。
注意事项:
- 输入的两个整数必须是正整数。
- 在辗转相除法中,需要保证a大于等于b,如果a小于b,需要将它们的值互换。
这个算法的C语言代码如下所示:
```c
#include <stdio.h>
int gcd(int a, int b) {
/*
求a和b的最大公约数
*/
int temp;
while (b) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
int lcm(int a, int b) {
/*
求a和b的最小公倍数
*/
return a * b / gcd(a, b);
}
int main() {
// 输入两个整数
int a, b;
printf("输入第一个整数:");
scanf("%d", &a);
printf("输入第二个整数:");
scanf("%d", &b);
// 求最大公约数和最小公倍数并输出
printf("%d和%d的最大公约数为:%d\n", a, b, gcd(a, b));
printf("%d和%d的最小公倍数为:%d\n", a, b, lcm(a, b));
return 0;
}
```
这段代码中,我们同样使用了辗转相除法来求最大公约数,用最大公约数求出最小公倍数。最后输出结果。
需要注意的是,输入的两个数必须是正整数,否则可能会出现错误。