pyschool_Lowest Common Multiple_t5_q13(最大公约数)

求最大公约数,要考虑求公约数的个数,题主只考虑了两个和三个的公约数。这其中使用了遍历、重构、三元操作符 等。一个小练习
def lcm_list(t,a,list0,num):    #重构出来的函数,用于筛查出被a的数且小于num
    while t < num:
        t += 1
        if t%a == 0:
            list0.append(t)
def LCM(nums):
    if len(nums) == 2:  #当nums数列为两个元素时
        x = nums[0]
        y = nums[1]
        num = x*y
        list1 = []
        list2 = []
        
        list4 = []
        t1 = x - 1
        t2 = y - 1
        lcm_list(t1,x,list1,num)
        lcm_list(t2,y,list2,num)
        length = len(list1)
        for i in range(length):  
            if list1[i] in list2:
                list4.append(list1[i])  #(用的传统形式)对两个列表的相同的元素进行筛选保存到list4列表中
    if len(nums) == 3:  #当nums数列为三个元素时
        x = nums[0]
        y = nums[1]
        z = nums[2]
        num = x*y*z
        list1 = []
        list2 = []
        list3 = []
        list4 = []
        t1 = x 
        t2 = y 
        t3 = z 
        lcm_list(t1,x,list1,num)
        lcm_list(t2,y,list2,num)
        lcm_list(t3,z,list3,num)
        length = len(list1)
        list4 = [list1[i] for i in range(length) if list1[i] in list2 if list1[i] in list3]     #(用三元操作符)对三个个列表的相同的元素进行筛选保存到list4列表中

        
    return list4[0]
print (LCM([4, 8]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值