2017-08-08 45 views
0

我正试图确定Python中两个数字的最大公因数。这是我得到的。这对我来说很合理,但对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

我建议你看看'最大公约数'及其实现......(你可能想在'while'语句中减少'x')。 –

+0

https://www.programiz.com/python-programming/examples/hcf –

回答

0

您正在减少循环外的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) 
+0

字面上没有输出。甚至没有错误。 –

+0

对不起。如果和打印将在循环外,递减将在外部。在发布这个答案之前我没有测试过。编辑应该工作的答案。 – Abhijeetk431

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) 
+0

您的代码会在递减语句中引发“错误缩进”错误。我将缩进移到与我认为合理的程序启动的while语句相同的级别。我可以看到“in”被打印出来,但这是它的结束。 –

+0

@MarkyMark你应该看看每一行的缩进是否正确。一个Tab缩进在我的程序中有4个空格,就像我发布的代码一样。在python中,重要的是这个indets是正确的,因为我们没有分号 – Gh0stscript

0

你有X- = 1不好的压痕,反正有一个GCD功能在python ...

from fractions import gcd 
print(gcd(8, 22)) 
+1

尽管这已被弃用,并且在3.5以后是'math.gcd' ... –

+0

好点@JonClements! –