查看原文
其他

越探究越有味—记与学生共编中华优秀算法“更相减损术”程序的过程

Math Charm 乐学数韵 2022-07-16

近日,在讲解到算法案例时,我常用QBACIS编程软件当堂展示给学生,让学生体会算法的精髓所在。渐渐地有个学生对算法产生了较为浓厚的兴趣。在初尝到自编“辗转相除法”程序的成功喜悦感后,他问我“更相减损术”又该如何编程呢?我让他先写出算法、画出程序框图,调整后再根据算法来编程。

他的思路先是根据课本的“辗转相除法”(也叫做欧几里得法)的程序来改编。

INPUT m,n

DO

r=m MOD n

m=n

n=r

LOOP UNTIL r=0

PRINT m

END

显然课本这个例子是用来求8251和6105这两个数的最大公因数的程序,简单易懂。

所以他觉得用“更相减损术”求98与63的最大公约数时也可以这样编:

INPUT m,n

DO

r=m - n

m=n

n=r

LOOP UNTIL r=0

PRINT m

END

我让他思考一下,并用QBACIS编一下,结果发现不行

什么原因呢?

原来刚才辗转相除法是用除数除于余数,一直循环至余数为0;但是更相减损术却是大的数减去小的数一直循环到差值为0.

 

找到原因后他马上改正了程序:如下

一运行搞定,

接着我和他一起再探究更为简洁的算法,如下;

搞定!

   后来那个学生还继续探究 “秦九韶算法””、“割圆术”的程序,我相信正是有了对数学本质的深入思考,他才会对数学着了迷。如果每节课、每个学生都能用心体会数学的韵味,又何愁学不好数学呢?


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存