辗转法相除:先将大数除以小数,如果整除,小数就是它们的最大公因数,如果不能整除,就记下余数,用前面的除数(就是小数),除以这个余数,以下类推,每一次都用前一个除式的除数除以自己的余数,直到有一个除法能整除,这时,最后能整除的除式的除数,就是这两个数的最大公因数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int divisor(int m, int n)
{
int r;
for(; r = m%n; m = n, n = r);
return n;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d和%d的最大公约数为%d\n", a, b,divisor(a,b));
system("pause");
return 0;
}