从键盘获取两个整数,求这两个数的最大公约数

int main()//方法1:从头到尾依次遍历,最后的公约数就是最大公约数
{     //也可以从后往前遍历,那第一个公约数就是最大公约数
    int m;
    int n;
    scanf("%d %d",&m,&n);//10,15
    int tmp = 1;//保存公约数
    for (int i = 1; i <= m; i++)//从头到尾遍历所有可能
    {
    if (m % i == 0 && n % i == 0)
    tmp = i;
    }
    printf("最大公约数=%d\n",tmp);
    return 0;
}
int main() //方法2:辗转相除法,r余数为0,则n就是最大公约数
{
    int m;
    int n;
    scanf("%d %d",&m,&n);//10,15
    int r;//余数
    for (r = m % n; r != 0; )
    {
    m = n;
    n = r;
    r = m % n;
    }
    printf("%d\n",n);
    return 0;
}

 方法二过程:

从键盘获取两个整数,求这两个数的最大公约数_第1张图片

 

你可能感兴趣的:(算法,c++,数据结构)