100以内素数和

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--100以内素数的和,超哥出品

declare

k number;

t integer;

x number default 0;

i number default 2;

v_sum number default 10;

begin

for n in 7 .. 100 loop

select sqrt(n) into k from dual;

select sqrt(n) into t from dual;

while i <= k loop

if MOD(n, i) = 0 then

x := 1;

exit;

end if;

i := i + 1;

end loop;

if (t > k) then

if (i = t and x = 0) then

v_sum := v_sum + n;

end if;

else

if (i = t + 1 and x = 0) then

v_sum := v_sum + n;

end if;

end if;

i := 2;

x := 0;

end loop;

dbms_output.put_line('Sum is ' || v_sum);

end;

--个人改进版这个判断条件是i=n但比上面的效率低,因为上面的循环是i到sqrt(n) declare

v_sum number default 0;

i integer default 2;

begin

for n in 2 .. 100 loop

while i < n loop

if MOD(n, i) = 0 then

exit;

end if;

i := i + 1;

end loop;

if i = n then

dbms_output.put_line(n);

v_sum := v_sum + n;

end if;

i := 2; --这步很重要,重置i,应为上面的循环使得i变成了n end loop;

dbms_output.put_line('Sum is ' || v_sum);

end;

相关文档
最新文档