0
00: 599  
01: 298  
02: 738  
03: 598   
04: 297  
05: 395 
06: 730 
07: 825
08: 597 
09: 295
10: 717
11: 597
12: 196
13: 397
14: 592
15: 393
16: 600 
17: 598
18: 902
19: 598
20: 196 
21: 398
22: 594 
23: 397  
24: 600   
25: 593
26: 196 
27: 393 
28: 595  
29: 604  
30: 593  
31: 717
32: 598
33: 196 
34: 398
35: 594
36: 397
37: 600
38: 000  
91: 005  
92: 000   // DAT 000
93: 000   // Counter
94: 002   // DAT 002
96: 001   // DAT 001 - plus 1  
97: 002   // DAT 002 - dividor
98: 002   // DAT 001 - incrementor
99: 050   // DAT 10  - max

嗨,大家好,

我有一个代码可以找到 1-100 之间的质数,但我正在努力将它重新创建到一个只能找到用户输入之间的质数的程序中。

我有一个计划,将一个数字从另一个数字中减去,然后将该数字除以 2、3、4 和 5。

你们有什么建议吗?我为缺乏评论表示歉意。

4

1 回答 1

2

免责声明:我不知道您的原始代码是做什么的,因为我看不懂数字代码。以下来自我自己编写的primes.lmc


代码(大量评论):

# Prime number finder. Prints all prime numbers between the numbers the user inputs (min, then max).

# Min
        INP
        SUB ONE
        STA NUM

# Max
        INP
        STA MAX

# Main checking loop. Check each number from NUM to MAX.
TLOOP   LDA NUM

# Have we done all MAX numbers?
        SUB MAX
        BRZ HALT

# Increment to next number to check.
        LDA NUM
        ADD ONE
        STA NUM

# Reset divisor.
        LDA ONE
        STA DIV

# Check NUM for primeness by dividing all numbers from 2 to NUM - 1 into it.
DLOOP   LDA DIV

# Increment to next divisor.
        ADD ONE
        STA DIV

# Have we checked up to the number itself?
        LDA DIV
        SUB NUM
        BRZ PRIME

# Setup for divide function.
        LDA NUM

# Modulus function: accumulator % DIV.

MODULUS SUB DIV
        BRP MODULUS
        ADD DIV

# Remainder is now in the accumulator. If its zero, NUM is not prime.
        BRZ NPRIME
        BRA DLOOP

# If its prime, print it.
PRIME   LDA NUM
        OUT

# Go back to the top.
NPRIME  BRA TLOOP

# End of program.
HALT    HLT

NUM     DAT 1
DIV     DAT 1
ONE     DAT 1
MAX     DAT

第一个用户输入是最小值,第二个是最大值(包括)。


运行(在幽灵上,从 13 到 23):

跑步

于 2015-02-14T11:41:54.760 回答