为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印出两个数字的公因数列表?

如何打印出两个数字的公因数列表?

眼眸繁星 2022-05-19 18:49:39
我需要打印出两个数字的公因数列表def print_nums(x, y):    for i in range(1, x + 1):        if x % i == 0:            print(i)    for t in range(1, y + 1):        if y % t == 0:            print(t)number = int(input("Enter a number: "))number2 = int(input("Enter a second number: "))print("Common factors are: ".format(number, number2))print_nums(number, number2)它打印出两个列表,但不是每个列表的公因子
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

def print_nums(x, y):

    zet = []

    for i in range(1, x + 1):

        if x % i == 0:

            #print(i)

            zet.append(i)

    for t in range(1, y + 1):

        if y % t == 0 and t in zet:

            print(t)



number = int(input("Enter a number: "))

number2 = int(input("Enter a second number: "))


print("Common factors are:")

print_nums(number, number2)

运行代码示例:


Enter a number: 24                                                                                                                                                                  

Enter a second number: 18                                                                                                                                                           

Common factors are:                                                                                                                                                                 

1                                                                                                                                                                                   

2                                                                                                                                                                                   

3                                                                                                                                                                                   

6  


查看完整回答
反对 回复 2022-05-19
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您的代码只打印因子,而不是公因子。您可以遍历xandy的公共范围并检查是否i是两者的一个因素:


def common_factors(x, y):

    for i in range(2, min(x, y)+1):  # 1 is trivial, so ignore it

        if x % i == 0 and y % i == 0:  # If x and y are both multiples of i

            yield i


print(list(common_factors(9, 12)))  # -> [3]


查看完整回答
反对 回复 2022-05-19
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

与上述解决方案基本相同的想法..但是一个漂亮的函数基本上只检查列表中非唯一的项目..就像 set 的对立面...这会返回共同因素,因为它们会出现不止一次


from iteration_utilities import duplicates, unique_everseen


facs=[]


def print_nums(x, y, facs):

    for i in range(1, x + 1):

        if x % i == 0:

            facs.append(i)

    for t in range(1, y + 1):

        if y % t == 0:

            facs.append(t)

    return list(unique_everseen(duplicates(facs)))


查看完整回答
反对 回复 2022-05-19
  • 3 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号