You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL实现1-500阿姆斯特朗数生成及代码问题排查

PL/SQL 生成1-500范围内阿姆斯特朗数的修复方案

原代码错误原因

  • 累加和变量s未在每次外层循环开始时重置:原代码仅在声明阶段初始化s=0,计算完第一个数字后s的结果会累积到后续所有数字的计算中,导致判断逻辑完全失效
  • 输出语句存在语法错误:dbms_output.put_line('a='||to_char(a)'); 中to_char(a)后多了一个冗余单引号,会触发编译报错

修正后可运行代码

declare
    n number;
    s number;
    r number;
    len number;
    m number;
begin
    for a in 1..500 loop
        -- 每次计算新数字前重置累加和
        s := 0;
        m := a;
        n := a;
        len := length(to_char(n));
        
        while n > 0 loop
            r := mod(n, 10);
            s := s + power(r, len);
            n := trunc(n / 10);
        end loop;
        
        if m = s then
            dbms_output.put_line('a=' || to_char(a));
        end if;
    end loop;
end;
/

运行输出结果

a=1
a=2
a=3
a=4
a=5
a=6
a=7
a=8
a=9
a=153
a=370
a=371
a=407

内容的提问来源于stack exchange,提问作者Midas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:54:10