c语言定义一个求最大公约数函数int gcd(int x, int y),在主函数输入两个整数,然后调用gcd()输出这两个整数的最大公约数。
时间: 2024-02-03 08:14:48 浏览: 68
c语言求最大公约数方法
下面是使用辗转相除法实现的求最大公约数函数gcd:
```c
#include <stdio.h>
int gcd(int x, int y);
int main() {
int x, y, result;
printf("请输入两个整数:");
scanf("%d %d", &x, &y);
result = gcd(x, y);
printf("%d和%d的最大公约数为%d\n", x, y, result);
return 0;
}
int gcd(int x, int y) {
int remainder;
while (y != 0) {
remainder = x % y;
x = y;
y = remainder;
}
return x;
}
```
使用辗转相除法求最大公约数的原理是:如果a和b的最大公约数为c,那么a和b可以表示为a = m * c,b = n * c,其中m和n互质。我们可以对a和b做如下操作:a = b * q + r,其中q是a和b的商,r是余数。根据上面的式子,我们可以得到r = a - b * q = m * c - n * c * q = c * (m - n * q)。因为m和n互质,所以m - n * q和n互质。也就是说,我们可以用b和r代替原来的a和b,继续做辗转相除,直到余数为0为止。最后的b就是a和b的最大公约数。
阅读全文