用C语言给定两个数,求这两个数的最大公约数
时间: 2024-02-04 15:42:04 浏览: 72
可以使用辗转相除法(也叫欧几里得算法)来求两个数的最大公约数。
代码如下:
```c
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int a, b;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
printf("最大公约数为:%d\n", gcd(a, b));
return 0;
}
```
在这个函数中,如果 `b` 为 0,则直接返回 `a`,否则递归调用函数 `gcd(b, a % b)`,直到 `b` 为 0。
相关问题
c语言给定两个数,求这两个数的最大公约数
可以使用辗转相除法(欧几里得算法)来求两个数的最大公约数。
具体步骤如下:
1. 如果其中一个数为0,则另一个数就是最大公约数。
2. 否则,用较小的数去除较大的数并取余数。将余数作为新的被除数,原来的除数作为新的除数,继续执行第一步。
3. 直到余数为0,此时的除数即为最大公约数。
下面是 C 语言实现:
```
#include <stdio.h>
int gcd(int a, int b) {
int r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
int main() {
int a, b, result;
printf("请输入两个整数:\n");
scanf("%d%d", &a, &b);
result = gcd(a, b);
printf("最大公约数为:%d\n", result);
return 0;
}
```
可以输入两个整数,程序会输出它们的最大公约数。
用c语言给定两个数,求这两个数的最大公约数和最小公倍数
最大公约数可以使用欧几里得算法,最小公倍数可以使用两数相乘然后除以最大公约数来得到。以下是C语言代码实现:
```c
#include <stdio.h>
// 求最大公约数
int gcd(int a, int b) {
if (a == 0) return b;
return gcd(b % a, a);
}
// 求最小公倍数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int a = 12, b = 18;
printf("最大公约数为: %d\n", gcd(a, b));
printf("最小公倍数为: %d\n", lcm(a, b));
return 0;
}
```
输出结果为:
```
最大公约数为: 6
最小公倍数为: 36
```
阅读全文