辗转相除法的原理( 二 )


gcd(1204,84)=gcd(1204-n*84,84) , n是减去的84的个数 。我们如何一步到位找到最大的n呢?也就是说1204最多能被84减多少次呢?也就是说1204大概是84的多少倍呢?
你发现 , 带余除法可以一步到位算出n:
1204÷84=14……28 , 也就是说1204最多能减14个84 , 减完剩下28 。这个28就是我们想要的 , gcd(1204,84)=gcd(1204-14*84,84)=gcd(28,84) 。
实际上我们只需要除完的余数 , 得到余数的运算叫做模运算 , C++中用%表示 , 1204%84=28 。这就是辗转相除法 。