Problem Description
编写函数 gcd(m, n) 来计算整数 m 和 n 的最大公约数。
测试程序为:
#include <stdio.h>
int gcd(int m, int n);
int main()
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
{
printf("%d\n", gcd(a, b));
}
return 0;
}
/* 你的代码将被嵌在这里 */
Input Description
多组输入数据,每组一行,为两个正整数m, n,以空格分隔。
Output Description
对每组输入数据,在一行中输出其最大公约数。
Sample Input
12 16 9 7 2 10
Sample Output
4 1 2
代码:
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int gcd(int a, int b)
{
int c;
while(b != 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}
//注意只是部分答案不是完整的;请看题目
关于求最大公约数的方法:
1.先确定要求公约数的两个数分别为a, b;
2.再拿a % b (或者 b % a都行), 然后把余数记为c = a % b;
3.让a = b; b = c;
4.一直%b下去,直到b = 0后停止, a就是最大公约数;
例如:
a = 16; b = 20;
c = a % b = 4;
a = b = 20;
b = a = 4;
继续
a = 20; b = 4
c = a % b = 0
a = b = 4
b = c = 0
此时b = 0;停止;
最大公约数为 a = 4;