用c语言求两个数的最大公约数
时间: 2024-02-04 21:37:55 浏览: 67
以下是用C语言求两个数的最大公约数的代码:
```c
#include <stdio.h>
int gcd(int a, int b);
int main() {
int a, b, result;
printf("输入两个整数:");
scanf("%d %d", &a, &b);
result = gcd(a, b);
printf("最大公约数为:%d\n", result);
return 0;
}
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
```
代码中使用递归方式求两个数的最大公约数。函数gcd(a, b)的返回值为a和b的最大公约数。如果b等于0,则a就是最大公约数。如果b不等于0,则递归调用gcd(b, a % b),直到b等于0为止。
相关问题
用c语言求两数的最大公约数和最小公倍数
在C语言中,求两个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)可以利用欧几里得算法(Euclidean Algorithm)来实现最大公约数,然后通过公式 LCM(a, b) = |a * b| / GCD(a, b) 来计算最小公倍数。以下是这两种算法的简单实现:
```c
// 求最大公约数(GCD)
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 求最小公倍数(LCM)
int lcm(int a, int b) {
int temp = gcd(a, b);
return (a * b) / temp;
}
```
在这个代码片段中,
- `gcd(a, b)` 函数递归地调用自身,直到找到a除以b的余数为零,此时的b就是最大公约数。
- `lcm(a, b)` 函数首先调用`gcd(a, b)`求出最大公约数,然后用两数乘积除以最大公约数得到最小公倍数。
要使用这两个函数,你可以像这样调用它们:
```c
int main() {
int num1 = 48, num2 = 18;
int result1 = gcd(num1, num2); // 最大公约数
int result2 = lcm(num1, num2); // 最小公倍数
printf("GCD of %d and %d is: %d\n", num1, num2, result1);
printf("LCM of %d and %d is: %d\n", num1, num2, result2);
return 0;
}
```
c语言求两数的最大公因数
可以使用辗转相除法来求两个数的最大公因数,C语言代码如下:
```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("请输入两个整数:");
scanf("%d %d", &a, &b);
int result = gcd(a, b);
printf("%d 和 %d 的最大公因数是 %d\n", a, b, result);
return 0;
}
```
这段代码中,`gcd` 函数使用递归的方式来实现辗转相除法,`main` 函数则是用来读入两个整数并输出它们的最大公因数。
阅读全文