oracle for循环求1到100之间的素数

oracle for循环求1到100之间的素数,第1张

declare

/*思路:素数是只能被1和它本身整除的数,针对一个数n,从2到n-1对其求模,宴虚如果能整除就不是素数清并*/

v_result number/*是否为素数,1为素数,0为非素数*/

jnumber/答祥迹*从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

本过程输入参数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

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_num<4 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_num<>v_now then --如果有能被整除的数,且被除数不是除数本身,就不是素数搜森槐

v_yes:=0

end if

v_now:=v_now+1--被除数递增

exit when v_now>=v_num--当被除数大于除数时退出

end loop--因为要一个一个的判断,所以要来一次循环

end if

if v_num>4 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

参考一下,自己写的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8280968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存