我正在尝试确定Python中两个数字的最大公因子。这就是我所拥有的。这对我来说很有意义,而不是Python。我没有收到Python的任何特定错误。它不会运行。
def highestFactor(numX,numY):
if numX > numY:
x = numY
else:
x = numX
while x > 1:
if numX % x == 0 and numY % x == 0:
print x
break
x -= 1
highestFactor(8,22)
有什么想法吗?
答案 0 :(得分:1)
你正在减少循环外的x值。
试试这个: -
def highestFactor(numX,numY):
if numX > numY:
x = numY
else:
x = numX
while x > 1:
if numX % x == 0 and numY % x == 0:
break
x -= 1
print x
highestFactor(8,22)
答案 1 :(得分:0)
这适用于Python3:
def highestFactor(numX,numY):
print('in')
if numX > numY:
x = numY
else:
x = numX
while x > 1:
if numX % x == 0 and numY % x == 0:
print(x)
break
x -= 1
highestFactor(8,22)
答案 2 :(得分:0)
你在x- = 1上有一个不好的缩进,无论如何在python中有一个 gcd 函数......
from fractions import gcd
print(gcd(8, 22))
答案 3 :(得分:0)
您可以按照上面的建议使用数学库,否则最快的计算方法是
def gcd(m,n):
if m<n: #assuming that m should always be greater than n
(m,n) = (n,m)
while m%n !=0:
(m,n) = (n, m%n)
return n
希望这会有所帮助