declare
創新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的商洛網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
v_num number;
v_now number;
v_yes number;
c_max number;
begin
v_num:=1;
c_max:=200;--這里設置最大數,想要100這內就寫100,想要1000之內就寫1000
loop
v_now:=2;--這里設置每一個數的初始被除數,從2開始
v_yes:=1;--設置初始參考數,1為素數,0為非素數,默認初始為1
if v_num4 then
dbms_output.put_line(v_num);--1到3都是素數,這里就不再判斷了
-- v_num:=v_num+1;--自增1
end if;
if v_num=4 then
--這里開始判斷,只能被1和本身整除的數,就是素數
loop
if mod(v_num,v_now)=0 and v_numv_now then --如果有能被整除的數,且被除數不是除數本身,就不是素數
v_yes:=0;
end if;
v_now:=v_now+1;--被除數遞增
exit when v_now=v_num;--當被除數大于除數時退出
end loop;--因為要一個一個的判斷,所以要來一次循環
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;
參考一下,自己寫的
本過程輸入參數inp,計算1到inp之間的素數
算法:
拿出1-inp之間的每個數i,用2到i的平方根之間的每個數去除,全部除不盡的即為素數,有一個能除盡的為非素數
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
/*思路:素數是只能被1和它本身整除的數,針對一個數n,從2到n-1對其求模,如果能整除就不是素數*/
v_result number; /*是否為素數,1為素數,0為非素數*/
j number; /*從2到i-1取模,如果能被整除就不是素數*/
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如何判斷素數,怎樣判定素數
文章URL:http://m.kartarina.com/article22/dseiojc.html
成都網站建設公司_創新互聯,為您提供電子商務、企業網站制作、App設計、定制開發、標簽優化、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯