从键盘输入两个正整数,并找出他们的最大公约数,不太能看懂while后面不停赋值是什么意思

img


不太能看懂这个代码后面改的地方为什么要来回赋值
尤其是a=d那一步

  1. 辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
  2. 图中的表示是伪代码,a = d 表示 把 d 赋值给 a (等号右边赋值给左边)
  3. a表示第一个数,b表示第二个数,要求这两个数的最大公约数可以用辗转相除法,结合辗转相除法的定义就不难理解代码的思路了

这个是辗转相除法,出自九章算术,欧几里得也提出类似的算法,是一个特定的算法。