我正在学习 LMC,但我无法在 LMC 中找到 100 之前的奇数之和,例如 1+3+5+7... 等等
我确实编写了将两个数字相加的代码
INP //here I wil input 1
STA 99
INP // here I will input 2
ADD 99
OUT
HLT
我不知道如何遍历它,所以我可以得到奇数的总和。如果有人可以请帮助我?
我正在学习 LMC,但我无法在 LMC 中找到 100 之前的奇数之和,例如 1+3+5+7... 等等
我确实编写了将两个数字相加的代码
INP //here I wil input 1
STA 99
INP // here I will input 2
ADD 99
OUT
HLT
我不知道如何遍历它,所以我可以得到奇数的总和。如果有人可以请帮助我?
如果您需要输出 1 到 100 之间的奇数,则没有理由要求用户输入:您已经拥有解决问题的所有要素,因此无需询问任何内容。
使用 LMC,您通常需要定义一些常量数据,例如 ... 数字 1。对于本练习,数字 2 也可以方便地准备。所以为这两个号码保留两个“邮箱”(使用DAT
)。
下面是程序如何遍历 1 到 99 之间的奇数:
LOOP LDA CURRENT // start with one
OUT // output less than 100
ADD TWO
STA CURRENT
SUB HUNDRED // compare with 100
BRP EXIT // halt when above
BRA LOOP // and repeat
EXIT HLT
CURRENT DAT 1
TWO DAT 2
HUNDRED DAT 100
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>
但是,计算这些数字的总和将超出 LMC 的能力。1+3+5+..+99的总和是 2500,而 LMC 只能处理 999 以内的数字,所以这是行不通的。