这为什么这样写!

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:25:17
Do
r = maxv Mod minv: maxv = minv: minv = r
Loop While (r <> 0)

这是求最大公约数的吧.minv中就是返回的最大公约数.
因为最大公约数要同时被两个数都能整除.也就是能被大数,小数,和大数比小数的余数都能整除.如果不能被余数事除,则:
设大数/小数=x.....Other
公约数为Right
大数maxv=minv*x+other
因Right为公约数则
(minv*x+other)/Right的余数该为0
=(minv*x)/Right+other/Right
=x*minv/right+other/Right
第一项为0,第二项余数不为零,证明假设余数不能被整除是错误的.即然假设不对.也就是最大公约数能被大数,小数,大数/小数的余数整除.也就是被小数和大数/小数的余数整除.依此为据进行求解.