c语言经典题算法1--用辗转相除法求两个数的最大公约数

题目: 用辗转相除法求两个数的最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 

int main()
{
    int a, b,r;

    scanf("%d %d", &a, &b);
    while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数
    {
        r = a%b;
        a = b;
        b = r;
    }
    printf("最大公约数%d\n", a);
    system("pause");
}

辗转相除法:
目的:求两个整数的最大公约数
最大公约数:能同时被两个整数整除的最大公约数
原理:
最大公约数 = 小数 与 (大数%小数) 的最大公约数

利用这条原理,反复执行,直到   大数%小数 = 0,此时较小的数就是原来两数的最大公约数

例子:
105 252
252 % 105 = 42;
105 % 42 = 21;
42 % 21 = 0;
——即21为105与252的最大公约数
这种算法比起用接连的数不断循环找出最大公约数,会节省很多步骤,可以大大加快代码的执行速度

使用软件:vs2013
运行结果:
c语言经典题算法1--用辗转相除法求两个数的最大公约数_第1张图片

你可能感兴趣的:(算法,c语言,算法)