最大公约数,欧几里得算法

    科技2022-07-10  98

    借鉴了其他博主思路,代码是自己写的。

    https://blog.csdn.net/tterminator/article/details/50927393

    一、问题描述

    求两个正整数的最大公约数(欧几里得算法)。

    二、问题分析

    假设有两个正整数x,y,则肯定有以下公式成立

    x = k * y + b,其中 b = x % y

    若x和y有最大公约数z,则z必定可以分别整除x和y,那么必有下式

    b = x - k * y可以被z整除。

    也即两个较大的数x和y的公约数问题,可以转换为两个较小的数x和b的公约数问题。

    int maxComDiv(int num1,int num2){ //求最大公约数 int temp=0; while(num1!=0){ temp=num2%num1; num2=num1; num1=temp; } return num2; }
    Processed: 0.028, SQL: 8