#=======================================================================
# Author: Isai Damier
# Title: Greatest Common Divisor
# Project: geekviewpoint
# Package: algorithms
#
# Statement:
# Find the greatest common divisor of the given numbers
#
# Sample Input: 18, 27
# Sample Output: 9
#
# Description: This function finds the greatest common
# divisor of the given numbers. The GCD of x and y is the greatest
# integer that divides both x and y evenly. For example the gcd of
# 18 and 27 is 9 because 9*3 = 27 and 9*2= 18.
#
# Technical Details: Mathematicians have found numerous techniques
# for calculating the GCD of two numbers. The present
# implementation uses the mod operator. Other implementations
# may use subtraction, for example.
#=======================================================================
def GCD( a, b ):
if 0 == a or 0 == b:
return -1
if 1 == a or 1 == b:
return 1
while 0 < a and 0 < b:
if a > b:
a %= b
else:
b %= a
return 0 == a and b or a

import unittest
from algorithms import numbers as algorithm
class Test( unittest.TestCase ):
def testAllPrimes( self ):
expected = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
self.assertEquals( expected, algorithm.allPrimes( 30 ) )
expected = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
self.assertEquals( expected, algorithm.allPrimes( 31 ) )
expected = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
self.assertEquals( expected, algorithm.allPrimes( 40 ) )