我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。
本博客所有内容均为原创,如有转载请注明作者和出处
PLSQL计算质数
上一篇 /
下一篇 2006-02-17 00:00:00
/ 个人分类:ORACLE
前两天给开发人员进行了PL/SQL的培训,为了帮助他们熟悉PL/SQL的语法,最后留了一个小的练习题,列出100以内的质数。
其实算法很简单,两个循环就搞定了。但是发现使用不同的算法,执行效率差别之大相当惊人,特别是数据量级很大的时候。
A(|{C*gHp%^#}0下面就是最常见的一种写法:(也是最差的一种)
SQL> SET SERVEROUT ON
y0{3_,|3}0SQL> DECLARE
"EY1w#hm:He3`4G-j
S02 V_FLAG BOOLEAN;ITPUB个人空间cu0HZ`
OIf\
3 BEGINITPUB个人空间&H \7rm*i.U3PB
4 FOR I IN 2 .. 100 LOOP
3\7]w)gzT7N+z05 V_FLAG := TRUE;
,S^J-MGlz;|06 FOR J IN 2 .. I - 1 LOOP
eU"n2q
\9h07 IF MOD(I,J) = 0 THENITPUB个人空间9N`7zSK@'^
8 V_FLAG := FALSE;ITPUB个人空间7O!U0n%Z#G
9 END IF;ITPUB个人空间$u+Q.scGg0\k
10 END LOOP;
#lM8{`{?T011 ITPUB个人空间X n)xZ6y?*B
12 IF V_FLAG = TRUE THEN
E
x8`UBxwA013 DBMS_OUTPUT.PUT_LINE(I);
yc-DP
T014 END IF;ITPUB个人空间,e*\_Fi2M$E@3yz
15 END LOOP;ITPUB个人空间%IRS:C Y4^w9l
16 END;
.M+mG
zI9We
_~017 /
9O`#p5ZJ5_
_02ITPUB个人空间.W3{r
{n$X'}-~
B
3ITPUB个人空间,h&N"~D[@
5ITPUB个人空间Mt.y~-Y#Es
7
mY&n#t&t