python-3.8 - 检查数字是否互质
问题描述
检查数字是否互质。我实际上在这里使用了一个更简单的逻辑,这完全有意义,但由于某种原因,我无法使用此代码获得正确的答案。请检查代码,让我知道你的想法:)
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')
解决方案
这条线
if setm.intersection(setn) == '1':
没有正确进行比较。有很多方法可以修复它 - 例如,您可以检查交叉点的长度:
if len(setm.intersection(setn)) == 1:
这种比较背后的想法是,1
由于数学原因,总是在两个除数集合中,所以如果集合在单个项目上相交,它必须是1
.
PS 请注意,您的算法会错误地将两个 1 识别为互质;这应该通过一些额外的检查来解决。
推荐阅读
- floating-point - 浮点减法恒等式
- reactjs - React + Enzyme - 在功能组件中找不到任何东西
- java - 将延迟初始化对象设为空,而对象在 jpa 中使用休眠代理
- wso2 - 如何在 wso2 esb 中组合两个查询
- c++ - 如果数组长度为 100000,则使用归并排序计算反转会给出负数
- android - Android 上的 PWA 不允许 CKEDITOR 浏览服务器按钮链接?
- python - 想要从文本或 pdf 文件中提取文本作为不同的段落
- python-3.x - 用于 s3 身份验证的临时 AWS 令牌的 PySpark 问题
- c# - 使用 ASP.NET MVC 中的属性重定向到操作
- ajax - 如何在codeigniter中使用CSRF令牌和数据库中的Ajax Post数据并给出403错误..?