use a different gcd subroutine