|
尝试了一下找6个的
with t as (select 4 a from dual union select 9 from dual union select 25 from dual union select 49 from dual union select 121 from dual union
select 169 from dual union select 289 a from dual union select 361 from dual union select 529 from dual union select 841 from dual),
n as (select rownum r from dual connect by rownum<=12500),--只在1000之内查找
i as (select distinct a*r p from t,n where a*r<=50000),
r as (select p, p-rank()over(order by p) g from i)
select min(p), max(p), count(*) from r group by g having count(*)>=6
————————————————————————————————————————
结果有俩
22020 22025 6
47672 47677 6
当然,不能保证这就是最小的结果。
————————————————————————————————————————————————————
这个问题,如果用筛除,应该会效率更高,毕竟在剔除所有的质数和任意两个质数的乘积后,只需要从剩下的数中找出最小的连续N个数,就一定是满足题设要求的答案了 |
|