本文共 660 字,大约阅读时间需要 2 分钟。
#includeint main(){ int a, b, r; printf("请输入两个正整数:\n"); scanf("%d %d", &a, &b); //下面要保证a>b if (a < b){ r = a; a = b; b = r; } //b为较小的数 while (b != 0){ r = a % b; a = b; b = r; } //输出最大公约数a,就是原先最大的数 printf("最大公约数为:%d\n", a); return 0;}
通过观察和理解,我得出了一下一些结论,方便记忆:
1.保证a > b
成立; 2.先利用较小的数b来进入while
循环; 3.后利用较大的数a作为输出; 4.while
循环内的主要过程就是先想象一个取余的式子,例如a % b = r
,先给r赋值,然后a、b依次向右移动;(可以当作左边有一股神秘力量哈) (第2、3两点,一个最大,一个最小,体现了数学之美,便于理解)
其实还有一种写法就是把while
的条件改为r != 0
,我认为存在一下两个问题: 1.如果要用的话,首先要给r
赋值,否则可能一开始他就是0,就不进入循环了 2.这种方式不便于记忆,不如前面一个最大值一个最小值来的容易; 当然这只是我的个人观点,每个人都有自己的习惯 转载地址:http://artki.baihongyu.com/