Python 使用查找除数的函数,查找任意两个给定正整数的最大公约数
这就是我到目前为止所拥有的Python 使用查找除数的函数,查找任意两个给定正整数的最大公约数,python,python-3.x,Python,Python 3.x,这就是我到目前为止所拥有的 def div(x): A=[] for i in range(1,x): if x%i==0: A.append(i) print(A) div(45) div(50) n=0 for i in range(1, min(45, 50)+1): if 45%i==50%i==0: n+=1 print(max(n)) 我尝试了多种逻辑,但最终都出现了一些错误。这是最合适的。
def div(x):
A=[]
for i in range(1,x):
if x%i==0:
A.append(i)
print(A)
div(45)
div(50)
n=0
for i in range(1, min(45, 50)+1):
if 45%i==50%i==0:
n+=1
print(max(n))
我尝试了多种逻辑,但最终都出现了一些错误。这是最合适的。我还是一个新手,所以一个简单的程序仍然在给我制造问题。这个问题只是为了测试我们的逻辑构建。您的行n=0将名称n定义为整数。然后稍后尝试执行printmaxn
换句话说,您尝试计算单个整数的最大值。这就是引发错误消息的原因。给出max的两种有效用法:单个iterable(如列表)或多个值(如整数)。不允许使用单个整数
我不确定你的意图是什么,所以我不能建议对你的计划做一点小的改变。我建议你改变你的方法。相反,您可以这样做:
对两个整数中的每一个调用div,生成两个除数列表。
将每个列表转换为一个。
计算这两个集合的交集请参见上一个链接以了解执行此操作的操作。现在有了一组公约数。
在该交点集中找到最大值。由于集合是一个iterable,max将处理该集合。得到的最大值就是最大公约数。
代码应该很容易编写。如果你有困难,展示你的尝试并寻求更多的帮助
顺便说一下,您的div函数不正确。范围的上限应为x+1,以将数字x作为除数包含在任何整数本身的除数中。div应该将列表返回给调用例程,而不是打印列表。您得到了什么错误?'int'对象在第13行中不可编辑请思考当n是一个数字时maxn会做什么。你的目的是什么?max5会返回什么?
TypeError Traceback (most recent call last)
<ipython-input-8-80ad9173d3fa> in <module>
11 if 45%i==50%i==0:
12 n+=1
---> 13 print(max(n))
TypeError: 'int' object is not iterable