实验5-11 使用函数求最大公约数 (10 point(s))
本题要求实现一个计算两个数的最大公约数的简单函数。
函数接口定义:
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
感谢集美大学蓝华斌同学修正测试数据!
Author
张高燕
Organization
浙大城市学院
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
参考答案:
int gcd( int x, int y )
{
int result;
for(result=x;result>=0;result-=1)
{
//因为 两数的最大公约数必定小于或等于两数中较小的一个
//所以 无需判定x y大小关系
//只需要 拿两数之一做除数,
//若 除数不符合最大公约数
//则 每次循环体结束后除数减一,被除数不变
if(0==x%result&&0==y%result)
return result;
}
}