Desenvolva um programa em Simpletron Machine Language, que verifique se o número fornecido pelo usuário é um número perfeito. Um número é considerado perfeito se a soma de seus divisores próprios é igual ao próprio número, como por exemplo o número 6, cuja soma de seus divisores próprios (1 + 2 + 3) é igual a 6. Caso o número seja considerado perfeito, o programa deverá retornar 1, caso contrário, deverá retornar 0. Caso o número fornecido pelo usuário seja menor do que 2, o programa deverá retornar -1.
| Posição | Palavra | Instrução |
|---|---|---|
| 00 | +1029 | read N |
| 01 | +2029 | load N |
| 02 | +3128 | subtract 1 |
| 03 | +4126 | branch negative to 26 |
| 04 | +4226 | branch zero to 26 |
| 05 | +2029 | load N |
| 06 | +3130 | subtract I |
| 07 | +4219 | branch zero to 19 |
| 08 | +2029 | load N |
| 09 | +3430 | module I |
| 10 | +4212 | branch zero to 12 |
| 11 | +4015 | branch to 15 |
| 12 | +2031 | load S |
| 13 | +3030 | add I |
| 14 | +2131 | store S |
| 15 | +2030 | load I |
| 16 | +3028 | add 1 |
| 17 | +2130 | store I |
| 18 | +4005 | branch to 05 |
| 19 | +2031 | load S |
| 20 | +3129 | subtract N |
| 21 | +4224 | branch zero to 24 |
| 22 | +1133 | write 0 |
| 23 | +4300 | halt |
| 24 | +1128 | write 1 |
| 25 | +4300 | halt |
| 26 | +1132 | write -1 |
| 27 | +4300 | halt |
| 28 | +0001 | constant 1 |
| 29 | +0000 | variable N |
| 30 | +0002 | variable I |
| 31 | +0001 | variable S |
| 32 | -0001 | constant -1 |
| 33 | +0000 | constant 0 |
Welcome to Simpletron!