From c62eea0af3ad4e45249f0c17ea597f2b220aad60 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 29 Nov 2021 15:58:12 +0100 Subject: Task 1 in PostgreSQL --- challenge-141/luca-ferrari/postgresql/ch-1.sql | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 challenge-141/luca-ferrari/postgresql/ch-1.sql diff --git a/challenge-141/luca-ferrari/postgresql/ch-1.sql b/challenge-141/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..c68e881175 --- /dev/null +++ b/challenge-141/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,32 @@ +CREATE OR REPLACE FUNCTION +f_find_divisors( divisors int default 8, count int default 10 ) +RETURNS SETOF int +AS $CODE$ +DECLARE + current_number int; + current_divisor int; + current_found int; +BEGIN + FOR current_number IN 1 .. 999999 LOOP + IF count = 0 THEN + EXIT; + END IF; + + current_found := 0; + + FOR current_divisor IN 1 .. current_number LOOP + IF current_number % current_divisor = 0 THEN + current_found := current_found + 1; + END IF; + END LOOP; + + IF current_found = divisors THEN + count := count - 1; + RETURN NEXT current_number; + END IF; + END LOOP; + + RETURN; +END +$CODE$ +LANGUAGE plpgsql; -- cgit