oracle怎么求素?cái)?shù),素?cái)?shù)如何求

oracle怎么求1..1000之間的素?cái)?shù)

Oracle是數(shù)據(jù)庫,存儲數(shù)據(jù)用的,應(yīng)用邏輯最好放在數(shù)據(jù)庫外面,雖然可以實(shí)現(xiàn),但是并不提倡。

站在用戶的角度思考問題,與客戶深入溝通,找到秦安網(wǎng)站設(shè)計(jì)與秦安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋秦安地區(qū)。

set serverout on

DECLARE

v_i???NUMBER;

v_j???NUMBER;

v_cnt?NUMBER;

TYPE?type_array?IS?TABLE?OF?NUMBER;

primes?type_array;

flag???NUMBER;

BEGIN

primes?:=?type_array();

primes.extend;

primes(1)?:=?2;

primes.extend;

primes(2)?:=?3;

v_i?:=?5;

v_cnt?:=?2;

LOOP

EXIT?WHEN?v_i??1000;

flag?:=?1;

v_j??:=?1;

LOOP

EXIT?WHEN?primes(v_j)?*?primes(v_j)??v_i;

IF?MOD(v_i,?primes(v_j))?=?0?THEN

flag?:=?0;

EXIT;

END?IF;

v_j?:=?v_j?+?1;

END?LOOP;

IF?flag?=?1?THEN

primes.extend;

v_cnt?:=?v_cnt?+?1;

primes(v_cnt)?:=?v_i;

dbms_output.put_line(v_i);

END?IF;

v_i?:=?v_i?+?2;

END?LOOP;

END;

/

用 oracle中PL/SQL算法 求100內(nèi)的素?cái)?shù)

本過程輸入?yún)?shù)inp,計(jì)算1到inp之間的素?cái)?shù)

算法:

拿出1-inp之間的每個數(shù)i,用2到i的平方根之間的每個數(shù)去除,全部除不盡的即為素?cái)?shù),有一個能除盡的為非素?cái)?shù)

set serverout on

create or replace procedure is_prime(inp number)

as

i number;

j number;

is_prim boolean;

begin

dbms_output.new_line;

dbms_output.put(to_char(2)||' ');

for i in 3..inp loop

begin

is_prim:=true;

for j in 2..trunc(sqrt(i)) loop

if mod(i,j)=0 then

begin

is_prim:=false;

exit;

end;

end if;

end loop;

if is_prim then dbms_output.put(to_char(i)||' '); end if;

end;

end loop;

dbms_output.new_line;

end;

/

exec is_prime(100)

oracle for循環(huán)求1到100之間的素?cái)?shù)

declare

/*思路:素?cái)?shù)是只能被1和它本身整除的數(shù),針對一個數(shù)n,從2到n-1對其求模,如果能整除就不是素?cái)?shù)*/

v_result number; /*是否為素?cái)?shù),1為素?cái)?shù),0為非素?cái)?shù)*/

j number; /*從2到i-1取模,如果能被整除就不是素?cái)?shù)*/

begin

for i in 1 .. 100 loop

j := 2;

v_result := 1;

loop

if mod(i, j) = 0 and i j then

v_result := 0;

end if;

j := j + 1;

exit when j = i;

end loop;

if v_result = 1 then

dbms_output.put_line(i);

end if;

end loop;

end;

【oracle】定義一個Oracle存儲過程,輸出1~100之間的素?cái)?shù)。

declare

v_num number;

v_now number;

v_yes number;

c_max number;

begin

v_num:=1;

c_max:=200;--這里設(shè)置最大數(shù),想要100這內(nèi)就寫100,想要1000之內(nèi)就寫1000

loop

v_now:=2;--這里設(shè)置每一個數(shù)的初始被除數(shù),從2開始

v_yes:=1;--設(shè)置初始參考數(shù),1為素?cái)?shù),0為非素?cái)?shù),默認(rèn)初始為1

if v_num4 then

dbms_output.put_line(v_num);--1到3都是素?cái)?shù),這里就不再判斷了

-- v_num:=v_num+1;--自增1

end if;

if v_num=4 then

--這里開始判斷,只能被1和本身整除的數(shù),就是素?cái)?shù)

loop

if mod(v_num,v_now)=0 and v_numv_now then --如果有能被整除的數(shù),且被除數(shù)不是除數(shù)本身,就不是素?cái)?shù)

v_yes:=0;

end if;

v_now:=v_now+1;--被除數(shù)遞增

exit when v_now=v_num;--當(dāng)被除數(shù)大于除數(shù)時退出

end loop;--因?yàn)橐粋€一個的判斷,所以要來一次循環(huán)

end if;

if v_num4 and v_yes=1 then

dbms_output.put_line(v_num);

-- v_num:=v_num+1;--自增

end if;

v_num:=v_num+1;--自增

exit when v_num=c_max;

end loop;

end;

參考一下,自己寫的

文章標(biāo)題:oracle怎么求素?cái)?shù),素?cái)?shù)如何求
網(wǎng)站地址:http://muchs.cn/article20/hciijo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、電子商務(wù)、網(wǎng)站內(nèi)鏈、網(wǎng)站制作、建站公司、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營