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

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和它本身的数即为质数;
但这里最后的内关联实际会发生笛卡尔积!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值