虽然后续改了大小,尝到了封装的甜头,可比例却不是自动更新的...
首先想到的就是穷举了
明显计算了很多次
看似正确,其实有个致命的问题
出现一个公约数后,要重置循环标记和最小值
也可以从大往小循环
辗转相除法又名广义欧几里得除法,是用来求解两个数的最大公约数的最佳算法之一。
算法原理:若a除以b的余数为r , 则有 (a , b) = ( b ,r ) ((a,b)表示a和b的最大公约数)
var temp=v是把v的值赋予temp的意思js里面赋值使用的是"=",判断相等用的是"=="。
var temp=v和var temp=0在这里是没有任何影响的,因为无论temp的初始值是多少,在第一次循环的时候,都会变成40%15的值,也就是10,之所以这样写,可能是作者的一个习惯而已。
temp=u%v%是取模运算,也就是俗称的取余数,这里就是将u除以v的余数赋值给了temp。而temp最后又赋值给了v
循环进行的条件就是v>0;那么当v=0也就是余数为0的时候,就终止循环。
这个算法的原理是数学上的辗转相除法,百度百科上有很详细的介绍,在这里我就不再献丑了