ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

欧几里得算法 求最大公约数(辗转相除法)

欧几里得算法 求最大公约数(辗转相除法)
int gcd(int u, int v)            
{while (v != 0) {  // 循环条件:余数不为0时继续迭代int temp = v; // 步骤1:保存当前的除数vv = u % v;    // 步骤2:计算新余数(u除以v的余数)u = temp;     // 步骤3:把原来的除数v赋值给u(作为下一轮的被除数)}return u; // 余数为0时,u就是最大公约数
}

利用了gcd(a, b) = gcd(a, b % a) (其中b > a)

不必考虑u和v的大小问题,因为它们能够经过一次循环自我调整为u大v小!

返回列表