本题要求实现一个计算两个数的最大公约数的简单函数。
函数接口定义:
int gcd( int x, int y );
其中x
和y
是两个正整数,函数gcd
应返回这两个数的最大公约数。
裁判测试程序样例:
#include <stdio.h>
int gcd( int x, int y ); int main() { int x, y; scanf("%d %d", &x, &y); printf("%d\n", gcd(x, y)); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
32 72
输出样例:
8
解题思路:这题可以使用辗转相除法来解决,即找到两数之间较大的数a对较小的数b取模,得到余数c,接着再用b对c取模,反复操作直到最后余数为0,最后取模的那个数就是最大公约数。(解题方法有很多,思路仅供参考)
C语言代码:
int gcd(int a, int b)
{
if (a >= b) {
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
else
if (b % a == 0)
return a;
else
return gcd(a, b % a);
}