PL/SQL 查找1-100之间的素数

本文提供两种使用PL/SQL编写的算法来找出1至100之间的所有素数,并通过dbms_output输出每个找到的素数及其序号。第一种算法采用双重循环判断每个数是否为素数;第二种算法则使用了更简洁的循环结构。
--实现查找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不是素数!!!一开始我以为是素数。。。

转载于:https://www.cnblogs.com/miaoying/p/5810944.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值