aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2021-11-29 15:58:12 +0100
committerLuca Ferrari <fluca1978@gmail.com>2021-11-29 15:58:12 +0100
commitc62eea0af3ad4e45249f0c17ea597f2b220aad60 (patch)
treef2ff05fcf8a83d2714084186c7d2c970d75241f4
parent69686f4bcbe2412b8a50ba9dd490dc335d5acb8e (diff)
downloadperlweeklychallenge-club-c62eea0af3ad4e45249f0c17ea597f2b220aad60.tar.gz
perlweeklychallenge-club-c62eea0af3ad4e45249f0c17ea597f2b220aad60.tar.bz2
perlweeklychallenge-club-c62eea0af3ad4e45249f0c17ea597f2b220aad60.zip
Task 1 in PostgreSQL
-rw-r--r--challenge-141/luca-ferrari/postgresql/ch-1.sql32
1 files changed, 32 insertions, 0 deletions
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;