Python 循环基础例题*2

333 阅读1分钟

一、辗转相除法计算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)