RosettaCodeData/Task/Greatest-common-divisor/SQL/greatest-common-divisor-3.sql

12 lines
216 B
SQL

CREATE FUNCTION gcd(integer, integer)
RETURNS integer
LANGUAGE sql
AS $function$
WITH RECURSIVE x (u, v) AS (
SELECT ABS($1), ABS($2)
UNION
SELECT v, u % v FROM x WHERE v > 0
)
SELECT min(u) FROM x;
$function$