C语言辗转相除法求最大公约数
时间: 2023-07-02 11:04:49 浏览: 136
辗转相除法(又称欧几里得算法)是求两个正整数的最大公约数的一种方法。该算法基于如下原理:两个数的最大公约数等于其中较小的数和两数相除余数的最大公约数。
以下是使用 C 语言实现辗转相除法的代码:
```c
#include <stdio.h>
int gcd(int a, int b) {
int temp;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int a, b, result;
printf("请输入两个正整数:\n");
scanf("%d %d", &a, &b);
result = gcd(a, b);
printf("%d和%d的最大公约数是%d\n", a, b, result);
return 0;
}
```
在该代码中,`gcd()` 函数接收两个参数 `a` 和 `b`,并返回它们的最大公约数。在 `main()` 函数中,用户输入两个正整数,然后调用 `gcd()` 函数来计算它们的最大公约数,并将结果输出到屏幕上。
这段代码的核心是 while 循环。在每次循环中,我们计算 `a` 除以 `b` 的余数,并将结果赋值给 `a`。然后,将原来的 `b` 的值赋给 `a`,将余数赋给 `b`。这个过程一直持续到 `b` 变成 0,此时 `a` 的值就是两数的最大公约数。
相关问题
C语言辗转相除法计算最大公约数和最小公倍数
以下是使用C语言辗转相除法计算最大公约数和最小公倍数的示例代码:
```c
#include <stdio.h>
int main() {
int a, b, temp, gcd, lcm;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
// 辗转相除法求最大公约数
int x = a, y = b;
while (y != 0) {
temp = x % y;
x = y;
y = temp;
}
gcd = x;
// 计算最小公倍数
lcm = (a * b) / gcd;
printf("GCD of %d and %d is %d\n", a, b, gcd);
printf("LCM of %d and %d is %d\n", a, b, lcm);
return 0;
}
```
运行结果:
```
Enter two positive integers: 12 18
GCD of 12 and 18 is 6
LCM of 12 and 18 is 36
```
C语言辗转相除发求最大公约数的程序
以下是 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;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("它们的最大公约数是:%d\n", gcd(a, b));
return 0;
}
```
以上是我能回答的问题,还有什么我可以帮助您的吗?
阅读全文