Problem C: 求最大公约数
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 19485 Solved: 11495
Description
两个数能同时被一个数所整除,这个数就是公约数。例如,12和20的公约数有1,2,4。其中4是12和20的最大公约数。
Input
输入两个正整数,用逗号分隔。
Output
输出这两个数的最大公约数。
Sample Input
24,60
Sample Output
12
HINT
可以用辗转相除法计算最大公约数;也可以用穷举法求最大公约数。
个人推荐辗转相除(欧几里得算法),a%b!=0时, 再除余数。
代码如下:
#include<stdio.h>
int gcd(int a,int b);
int main(void)
{
int n,m,i;
while(scanf("%d,%d", &n, &m)!=EOF)
{
if(n<m)
printf("%d\n",gcd(n,m));
else if(n>=m)
{
i=n;
n=m;
m=i;
printf("%d\n",gcd(n,m));
}
}
return 0;
}
int gcd(int a,int b)
{
int k; k=b;
while(a%b!=0)
{
k=a%b;
a=b;
b=k;
}
return k;
}