一、辗转相除法计算x、y最大公约数
辗转相除法
辗转相除法,又名欧几里德算法(Euclidean algorithm),是求两个正整数之最大公约数的算法。它是已知最古老的算法, 其可追溯至公元前300年前。
它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
代码表现
x = eval(input("x = "))
y = eval(input("y = "))
if x < y:
x, y = y, x #大数/小数得商、余数 ,谁大谁赋给x
while x % y != 0: #余数不为零时,即不能整除时
r = x % y
x = y
y = r
print("result =", y)
五元、两元、一元不同组合为一百元的方案个数
代码表现
i, j, k = 0, 0, 0 #i表5元个数,j表2元,i表1元
count = 0
for i in range(21): #i属于[0,1,2,3,4,...,20]
for j in range(51):
k = 100 - 5 * i - 2 * j
if k >= 0:
count += 1 #可行方案数+1
print("count = ", count)