简体   繁体   中英

Determining the greatest common factor with Python

I'm trying to determine the greatest common factor of two numbers in Python. This is what I've got. It makes sense to me, not so much to Python though. I'm not getting any specific error from Python. It just won't run.

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)

Any thoughts ?

You are decreasing the value of x outside the loop.

Try this:-

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)

you have a bad indentation on x-=1, anyway there is a gcd function in python...

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

Either you can go with math library as suggested above otherwise the fastest way to calculate is

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

Hope this helps

This works for me in 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) 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM