--实现查找1-100之间的素数
declare
  v_no     number := 0; --标记是第几个素数
  v_number number; --表示1-100之间的数
  v_num    number;
begin
  for v_number in 1 .. 100 loop
    --如果整除,那就不是素数,除数+1,;
    --如果不能整除,那么被除数就+1,继续执行除运算
    v_num := ceil(v_number / 2);
    for i in 2 .. v_num loop
      if mod(v_number, i) = 0 then
        exit;
      elsif i > v_num - 1 then
        v_no := v_no + 1;
        dbms_output.put_line('' || v_no || '个素数是:' || v_number);
      end if;
    end loop;
  end loop;
end;

/*求1到100之间的素数*/
declare
  v_m number := 2; --初始值
  v_i number;
  v_n number := 0;
begin
  while v_m < 100 loop
    v_i := 2; --除数
    loop
      if mod(v_m, v_i) = 0 then
        v_i := 0;
        exit; --表示退出循环
      end if;
      v_i := v_i + 1;
      exit when v_i > v_m - 1;
    end loop;
    if v_i > 0 then
      v_n := v_n + 1;
      dbms_output.put_line('' || v_n || '个素数是:' || v_m);
    end if;
    v_m := v_m + 1;
  end loop;
end;

1不是素数!!!一开始我以为是素数。。。

posted on 2016-08-26 16:41  miaoying  阅读(1779)  评论(0编辑  收藏  举报