我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。
本博客所有内容均为原创,如有转载请注明作者和出处
使用SQL判断一个数是否质数
上一篇 /
下一篇 2008-01-10 23:40:00
/ 个人分类:ORACLE
前两天用SQL计算一个数以内的所有质数,这里补一篇判断一个数是否是质数的SQL实现。
用SQL计算100以内的质数:http://yangtingkun.itpub.net/post/468/450278
这个SQL的实现方法前面那个SQL很类似:
SQL> UNDEF NUM
5lSi{*P2][H\(_5D0SQL> WITHITPUB个人空间vC2E@e q@Q^
2 T AS (SELECT ROWNUM RN FROM DUAL CONNECT BY LEVEL <= &&NUM/2)ITPUB个人空间:I]? xToV
3 SELECT &NUMITPUB个人空间0YEJk+`w&Mfq
4 || DECODEITPUB个人空间%zN#H%z1S2Sx
5 (ITPUB个人空间Q"Q"l(`#['U4N1tM_
6 (ITPUB个人空间(G#aZFt7a
7 SELECT &NUM FROM DUALITPUB个人空间$r9u.N;z7fA
8 MINUS
I'z*x8US'Ec!C0 9 SELECT A.RN * B.RN FROM T A, T BITPUB个人空间K Xt%JT2V@
10 WHERE A.RN <= ROUND(POWER(&NUM, 0.5))
t3Clz
|Ht0 11 AND B.RN >= ROUND(POWER(&NUM, 0.5))ITPUB个人空间Gm:jS#l aW
_
12 ),ITPUB个人空间uh/p/T \~3~
13 NULL,ITPUB个人空间K*uK?4bol
14 '不'
6LD+Y~9VC0 15 )
O0o3xu^Tg0 16 || '是质数'
xY6Tsj1HsH6^:dX0 17 FROM DUAL;
!|1az;u9}0输入num的值: 23
v;z]3z~bX0原值 2: T AS (SELECT ROWNUM RN FROM DUAL CONNECT BY LEVEL <= &&NUM/2)
a [;V,F&Uad6sy0新值 2: T AS (SELECT ROWNUM RN FROM DUAL CONNECT BY LEVEL <= 23/2)
s5iZQ wjO0原值 3: SELECT &NUM
{+Z&KO:L1X#f6R0新值 3: SELECT 23
/jkMv$Kj3fN0原值 7: SELECT &NUM FROM DUAL
u+K?2fk9AX3K;oX1x:B0新值 7: SELECT 23 FROM DUAL
,P!t|&r;My0原值 10: WHERE A.RN <= ROUND(POWER(&NUM, 0.5))
6t-lSXZx7N0新值 10: WHERE A.RN <= ROUND(POWER(23, 0.5))
OJ
?rU#~(w9i0原值 11: AND B.RN >= ROUND(POWER(&NUM, 0.5))
3Jhu0m:YW3L)Z1Y0新值 11: AND B.RN >= ROUND(POWER(23, 0.5))
23||DECODEITPUB个人空间F!AEw^
Y5eCZ#c
----------ITPUB个人空间F(F w Bv/Qhj(t
23是质数
SQL> UNDEF NUMITPUB个人空间G*E?J6D kL0P`
SQL> WITH
C~ bh9Npg0 2 T AS (SELECT ROWNUM RN FROM DUAL CONNECT BY LEVEL <= &&NUM/2)
4Wi[%@+Zho{`.d0 3 SELECT &NUMITPUB个人空间V2o-L0{vqV
4 || DECODE