博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
辗转相除法那点事儿(求最大公因数)
阅读量:3970 次
发布时间:2019-05-24

本文共 660 字,大约阅读时间需要 2 分钟。

辗转相除那点事儿

#include 
int 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/

你可能感兴趣的文章
DM9000&nbsp;驱动移植及源码简析
查看>>
DM9000&nbsp;驱动移植及源码简析
查看>>
创建字符设备的三种方法&nbsp;(转载)
查看>>
Linux下ARM汇编教程
查看>>
Linux下ARM汇编教程
查看>>
linux面试题参考答案
查看>>
LINUX驱动之IIC子系统之三I2C的数…
查看>>
LINUX驱动之IIC子系统之三I2C的数…
查看>>
Linux设备驱动之I2C架构分析
查看>>
i2c子系统之__i2c_first_dynamic_b…
查看>>
浅析linux内核中的idr机制
查看>>
i2c子系统之__i2c_first_dynamic_b…
查看>>
linux内核SPI总线驱动分析(一)
查看>>
浅析linux内核中的idr机制
查看>>
source&nbsp;insight使用
查看>>
linux内核SPI总线驱动分析(一)
查看>>
linux设备模型之uart驱动架构分析
查看>>
source&nbsp;insight使用
查看>>
git基本使用
查看>>
七、WordPress配置HTTPS与开启CDN加速
查看>>