首页 > 解决方案 > 检查数字是否互质

问题描述

检查数字是否互质。我实际上在这里使用了一个更简单的逻辑,这完全有意义,但由于某种原因,我无法使用此代码获得正确的答案。请检查代码,让我知道你的想法:)

m = int(input())
n = int(input())
setm = set()
setn = set()
for i in range(1,m+1):
    if (m%i==0):
        setm.add(i)
for j in range(1,n+1):
    if (n%j==0):
        setn.add(j)
if setm.intersection(setn) == '1':
    print('Coprime')
else:
    print('Not coprime')

标签: python-3.8

解决方案


这条线

if setm.intersection(setn) == '1':

没有正确进行比较。有很多方法可以修复它 - 例如,您可以检查交叉点的长度:

if len(setm.intersection(setn)) == 1:

这种比较背后的想法是,1由于数学原因,总是在两个除数集合中,所以如果集合在单个项目上相交,它必须是1.

PS 请注意,您的算法会错误地将两个 1 识别为互质;这应该通过一些额外的检查来解决。


推荐阅读