100以内素数和
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;