アフィリエイト広告を利用しています
目的:与えられた数値に対して、その数値が素数かどうかを判定する。
素数とは 「正の約数が2つの自然数」 のことです。
- 入力:
n(整数) - 出力: 素数であれば
TRUE、そうでなければFALSE
1. ファンクションの作成
まず、上記のファンクションをPostgreSQLデータベースに作成します。これは一度だけ行う操作です。
CREATE OR REPLACE FUNCTION is_prime(n INT) RETURNS BOOLEAN AS $$
DECLARE
i INT;
BEGIN
IF n <= 1 THEN
RETURN FALSE;
END IF;
FOR i IN 2..sqrt(n) LOOP
IF n % i = 0 THEN
RETURN FALSE;
END IF;
END LOOP;
RETURN TRUE;
END;
$$ LANGUAGE plpgsql;
このファンクションは整数nを引数として取り、その数が素数かどうかを判定します。
2.PL/pgSQLファンクションが存在するかどうかを確認する
SELECT EXISTS (
SELECT 1
FROM pg_proc
INNER JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
WHERE pg_proc.proname = 'is_prime'
AND pg_namespace.nspname = 'public'
);
3. ファンクションの呼び出し
ファンクションが作成された後、任意の整数を引数として渡し、その整数が素数かどうかを判定するためにファンクションを呼び出すことができます。
例えば、17 が素数かどうかを判定するには、以下のようなSQLクエリを実行します。

結果は TRUE になります(17は素数です)。
別の例として、15 が素数かどうかを判定するには、以下のクエリを実行します。

この場合、結果は FALSE になります(15は素数ではありません)。

コメント