辗转相除法求两个数的最大公约数

辗转法相除:先将大数除以小数,如果整除,小数就是它们的最大公因数,如果不能整除,就记下余数,用前面的除数(就是小数),除以这个余数,以下类推,每一次都用前一个除式的除数除以自己的余数,直到有一个除法能整除,这时,最后能整除的除式的除数,就是这两个数的最大公因数。

#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;
}

猜你喜欢

转载自blog.csdn.net/w838325636/article/details/85250769