create gcd alg