Nenhuma diversão numérica seria completa se os primos não aparecessem. Então, resolvi logo descobrir se é possível selecioná-los.
with integers as (select rownum as n
from all_tables
where rownum<100)
select n
from integers i1
where i1.n>1
and not exists (select 1
from integers i2
where i2.n>1
and i2.n<sqrt(i1.n)
and mod(i1.n,i2.n)=0)
Parece bom. E com isso podemos procurar relações interessantes, como primos gêmeos.
select n, previous from (
with integers as (select rownum as n
from all_tables
where rownum<100)
select n, lag(n, 1, n) over (order by n) previous
from integers i1
where i1.n>1
and not exists (select 1
from integers i2
where i2.n>1
and i2.n<sqrt(i1.n)
and mod(i1.n,i2.n)=0)
) where n=previous+2
Usando a função lag(), podemos selecionar todas as duplas de primos separados por apenas um inteiro. Com isso, descobri que 3001 e 2999 são primos gêmeos, assim como 9001 e 8999.
Nenhum comentário:
Postar um comentário