2017-08-08 75 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! –