oracle中plsql練習-----在控制台輸出1到100以內的素數。


一、思路:首先需要知道素數的概念即質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。

中心思想是,外循環所有的自然數,內循環折半查詢,增加代碼的速度,注意:從1開始,需要大於1,但是plsql中的循環是包括兩端的值的,所以初始值應該從2開始。

 

二、具體實現

 1 -- 在控制台輸出1到100以內的素數。
 2 
 3 declare 
 4 -- 聲明一個boolean類型的變量,用作判斷輸出
 5 v_z boolean;
 6 begin
 7   -- 循環100以內的數字
 8   for i in 2..100 loop
 9     -- 滿足條件即為true
10     v_z:=true;
11     -- 內循環,如果自然數不為素數,則不能被被2正常,直接就不走內循環,
12     -- 如果不是素數,則繼續走內循環,將v_z賦值為false,為后邊的輸出做判斷
13     for j in 2..trunc(i/2) loop
14       -- 內循環中的算法是折半查詢,例如:18不是素數,則18能被2整除,也就得到了18最大的因數為9,依次類推,提高了算法的效率。
15       if(mod(i,j)=0) then
16          v_z:=false;
17         
18       end if;
19     
20     end loop;
21     -- 最后輸出判斷,如果v_z為true,則該自然數為素數,則輸出。
22     if v_z then
23       dbms_output.put_line(i);
24     end if;
25     
26   end loop;
27   end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM