The aim of this challenge is to write a program using LMC to list all the factors of a given number.
The program will:
- Ask the user to enter a positive number (e.g. 12)
- Display all the factors of this number (e.g. 1,2,3,4,6,12)
High Level Flowchart
Here is the high-level flowchart for this algorithm. You can use it to first implement this algorithm using a high level language such as Python.
LMC Code
In order to implement this code in LMC you will first need to work out how to calculate the remainder (mod) of a division.
To complete this challenge you will need to use one of the following online LMC Simulators:
Test Plan
Here is a test plan to test your algorithm
Test # | Type of Test | Input Values | Expected Output | Actual Output |
#1 | Valid | 12 | 1,2,3,4,6,12 | |
#2 | Valid | 21 | 1,3,7,21 | |
#3 | Valid | 48 | 1,2,3,4,6,8,12,16,24,48 | |
#4 | Valid | 13 | 1,13 |
LMC Instruction Set
Note that in the following table “xx” refers to a memory address (aka mailbox) in the RAM. The online LMC simulator has 100 different mailboxes in the RAM ranging from 00 to 99.
Mnemonic | Name | Description | Op Code |
INP | INPUT | Retrieve user input and stores it in the accumulator. | 901 |
OUT | OUTPUT | Output the value stored in the accumulator. | 902 |
LDA | LOAD | Load the Accumulator with the contents of the memory address given. | 5xx |
STA | STORE | Store the value in the Accumulator in the memory address given. | 3xx |
ADD | ADD | Add the contents of the memory address to the Accumulator | 1xx |
SUB | SUBTRACT | Subtract the contents of the memory address from the Accumulator | 2xx |
BRP | BRANCH IF POSITIVE | Branch/Jump to the address given if the Accumulator is zero or positive. | 8xx |
BRZ | BRANCH IF ZERO | Branch/Jump to the address given if the Accumulator is zero. | 7xx |
BRA | BRANCH ALWAYS | Branch/Jump to the address given. | 6xx |
HLT | HALT | Stop the code | 000 |
DAT | DATA LOCATION | Used to associate a label to a free memory address. An optional value can also be used to be stored at the memory address. |
Solution...
The solution for this challenge is available to full members!Find out how to become a member:
➤ Members' Area