欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【SQL】使用SQL求1-100的质数

程序员文章站 2024-03-15 15:03:29
...

SQL求1-100的质数

场景:
今天无意中看到这样一个求1-100的质数SQL,如下:

with t as
 (select rownum rn from dual connect by level <= 100)
select *
  from t
 where rn > 1
minus
select ta.rn * tb.rn
  from t ta, t tb
 where ta.rn <= tb.rn and ta.rn > 1 and tb.rn > 1;

分析:
1.首先得明白什么是质数,简单的说质数就是:比1大的整数除了1和它本身外,不再有其他因数;

2.分析上面的SQL
with t as
 (select rownum rn from dual connect by level <= 100)  --使用with获取存放1-100整数的视图t
select *
  from t
 where rn > 1                                            --2-100的整数
minus                                                        --差集
select ta.rn * tb.rn                                     --乘积,此时的数表示因数大于2个的数
  from t ta, t tb
 where ta.rn <= tb.rn and ta.rn > 1 and tb.rn > 1;

2-100的数减去因数大于2个的数就剩下只有1和它本身的数即为质数;
但这里最后的内关联实际会发生笛卡尔积!

 

相关标签: 1-100的质数