辗转相除法计算两个数的最大公约数

本来想做一个在线的一元二次方程求解小工具,但是真的上手操作才发现,想法很简单、实现起来很麻烦。所以我只好不断的简化需求,经过几次简化现在只能先完成对分数的化简操作,也就是在给定一个分数之后,对这个分数进行约分得到最简分数。 其中用到了一个求两数最大公约数的方法——辗转相除法。 实际上想计算两个数的最大公约数,有几种不同的方法,其中辗转相除法是相对容易理解、也比较容易通过程序实现的。 这里是最终完成的效果演示: https://www.m3we.com/mathtools/gcd.php?numerator=3334&denominator=12 即便是这个简单的功能,现在的演示也仍然不够完善、不够完美,还有很多需要进一步完善的地方。所以对于求解一元二次方程,短期内是难以实现的,只有一步步的先将这些基础环节做好,之后再做打算了。 update 2024.07.13 自己试了几个,发现还是存在bug的,例如下面这个计算过程,就是不正确的,原因还没有推敲,估计还要几天才能解决。 https://www.m3we.com/mathtools/gcd.php?numerator=333143543545.12&denominator=124.32 update 2024.07.14 18:51 已经找到了上面bug产生的原因,并且初步解决了。这里欠着一篇关于这个bug的记录,额外的又发现了一些新的问题,例如对于如下的分数,最后的表现也不尽人意,所以这个小工具还是有很多要改进的地方: 1、如果分子或分母中有符号,则在最终的结果中,应该将符号提取到整个分数的外面: https://www.m3we.com/mathtools/gcd.php?numerator=-333&denominator=33 2、如果分子和分母中同时有符号,虽然最后的结果是正确的,但是这只是计算的结果,与思维的过程实际上是不同的。正确的思维过程应该是先完成(增加一步预处理)变号操作: https://www.m3we.com/mathtools/gcd.php?numerator=-333&denominator=-33