5-15求最大公约数
自己写的,贴了出来,用了辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法
def maxNum(a,b): #要求a>b
while True:
(c,d) = divmod(a,b)
if d!=0:
a=b
b=d
else:
break
return b
自己也在网上跟网友的贴出来做了下对比,感觉太残暴了,真心话,
真不知道写了啥的,代码如下
mins = num1
cd = None
if num2 < num1:
num1,num2 = num2,num1
cds = []
for i in range(1, num1+1):
if num1%i == 0:
cds.append(i)
cdslen = len(cds)
for i in range(0,cdslen):
if num2%cds[(cdslen-i-1)]==0:
cd = cds[(cdslen-i-1)]
break
return cd
最小公倍数的计算,多亏下面这句话,让我获益匪浅
最笨的方法:在两个数中,选那个大的数,然后去除以那个小的数,如果能整除,那么最小公倍数就是 那个大的数,如果不能,就把那个大的数乘以2,再去除以那个小的数,如果还不能整除,那么就把大 的数乘以3,...一直到把那个大的数乘以那个小的数。
链接网页http://zh.wikipedia.org/wiki/最小公倍數
自己得出的公式
def minNum(a,b):#用起笨办法,进行计算
if a<b:
a,b = b,a #确保第一个参数为最大值s
k = 2
while True:
if not a%b:#0的的bool值为false
break
else:
a*=k
k+=1
return a
print(minNum(12,18))#测试输出