[Tutor] A better way for greatest common divisor

David Hutto smokefloat at gmail.com
Fri Jul 30 03:47:20 CEST 2010


This is basically to get feedback, on a better way to show the
greatest common divisor in fraction, in order to reduce it fully, than
the one I've come up with. I'm sure there are better ways, so if you
have simpler method, or critique of what I've done, let me know.


'''Greatest Common Divisor Function'''
def gcd(num,den):
    while True:
        '''Find if numerator is less than denominator'''
        if num < den:
            '''Range backwards from larger number'''
            for y in range.__reversed__(range(1,den+1)):
                county = y
                '''If den is evenly divisible by county'''
                if den%county == 0:
                    '''And if num is divisible by county'''
                    if num%county == 0:
                        '''We have funneled the largest number\
                        divisible by both, by looping backwards\
                        from the larger number'''
                        print(county,'\n')
                        numdiv = num/county
                        dendiv = den/county
                        print('Reduced value is: %d/%d' % (numdiv,dendiv))
                        break
        '''Below is about the same, except turns the fraction\
        into it's wholenumber/fraction counterpart'''
        if num > den:
            for x in range.__reversed__(range(1,num+1)):
                countx = x
                if num%countx == 0:
                    if den%countx == 0:
                        print(countx)
                        numdiv = num/countx
                        dendiv = den/countx
                        print('Reduced value is: %d/%d' % (numdiv,dendiv))

print(int(numdiv/dendiv),'and',int(numdiv%dendiv),'/',int(dendiv))
                        break
        break

'''Greatest Common Divisor Function Instance'''
num=int(float(input('Input numerator: ')))
den=int(float(input('Input denominator: ')))
gcd(num,den)


David


More information about the Tutor mailing list