declare
創(chuàng)新互聯(lián)建站是一家集成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
/*思路:素?cái)?shù)是只能被1和它本身整除的數(shù),針對(duì)一個(gè)數(shù)n,從2到n-1對(duì)其求模,如果能整除就不是素?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;
本過(guò)程輸入?yún)?shù)inp,計(jì)算1到inp之間的素?cái)?shù)
算法:
拿出1-inp之間的每個(gè)數(shù)i,用2到i的平方根之間的每個(gè)數(shù)去除,全部除不盡的即為素?cái)?shù),有一個(gè)能除盡的為非素?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)
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è)置每一個(gè)數(shù)的初始被除數(shù),從2開(kāi)始
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
--這里開(kāi)始判斷,只能被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ù)時(shí)退出
end loop;--因?yàn)橐粋€(gè)一個(gè)的判斷,所以要來(lái)一次循環(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ù),sql判斷素?cái)?shù)
本文來(lái)源:http://jinyejixie.com/article42/dsseeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、App開(kāi)發(fā)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作、做網(wǎng)站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)