引言:本人从小白自学python,为了测试基础学习效果,增加一定的促进,想通过参加全国计算机等级考试二级python来检验基础学习情况。在学习过程中,会将该过程编写的python小程序题目在此发表,希望找到共同学习的人一起讨论,可能发表的有许多不是很完善的地方,请大家指正。后期学习路线,还会继续通过参加一些社会类的考试来检验学习成果。高阶段学习的话,可能会参加一些python的比赛,或者自己接一些项目,然后会根据自己的情况将一些项目的Python程序在此分享。
一、本项目来源:全国计算机等级考试二级教程python语言程序设计,第四章课后习题第二程序题第2小题。最大公约数计算。获得两个整数,求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。
二、先上传自己写的程序
def find_divisor(a,b):
if a<b:
a,b=b,a
if a%b==0:
return b
else:
return find_divisor(b,a%b)
三、解读程序语句。
这个程序简单,主要是要理解辗转相除法。欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
if a<b:
a,b=b,a
于是采用两个If判断函数,先判断两个数大小,
if a%b==0:
return b
else:
return find_divisor(b,a%b)
再判断相除的余数是否为零,不为零就继续返回继续相除,直到获得余数为零。
四、程序运行效果