2012年8月21日火曜日

SQLで素因数分解

素因数分解やってみた。
with
    target as (
        select
            4294967295 value,
            2 as prime
        from
            dual
    ),
    prime_factorization (value, prime, success) as (
        select
            value,
            prime,
            null
        from
            target
        union all
        select
            case
                when mod(value, prime) = 0 then value/prime
                else value
            end,
            case
                when mod(value, prime) = 0 then prime
                else prime + 1
            end,
            case
                when mod(value, prime) = 0 then 1
                else 0
            end
        from
            prime_factorization
        where
            value > 1 or (value = prime)
    )
select
    ((select value from target) ||
     ' = ' ||
     listagg(prime, ' * ') within group (order by prime)
    ) as result
from
    prime_factorization
where
    success = 1
group by
    null

0 件のコメント:

コメントを投稿

SQL で MP4 をパース

SQL でビットマップ画像の2値化は4年位前に挑戦した。 最近、それの Impala 版 を作ったときに閃いた。 「再帰CTEがあるなら、mp4 もいけるんじゃないか」と。 やってみた。 use ragingo drop table video go create...