【发布时间】:2022-11-24 16:53:36
【问题描述】:
我写这段代码是为了检查某个东西是否是素数。
.data
is_prime: .asciiz "--Prime--"
not_prime: .asciiz "--No prime--"
element: .word 2
.text
main:
#importeer prime messages
la $t3, is_prime
la $t4, not_prime
lw $t1, element
# input variabele n
li $v0, 5
syscall
move $t0, $v0
if_loop:
beq $t0, 1, prime_true
bgt $t0, 1, prime_check
prime_check:
beq $t0, $t1, prime_true
div $t1, $t0
mfhi $t6
beq $t6, 0, prime_false
addi $t0, $t0, 1
prime_true:
li $v0, 4
move $a0, $t3
syscall
j exit
prime_false:
li $v0, 4
move $a0, $t4
syscall
j exit
exit:
但是,每次我使用 3、4、5 或 6 等任何输入运行它时,它都会给出 --Prime-- 而对于 4 和 6 它不应该。
【问题讨论】:
-
我没有看到任何跳回到
if_loop:所以我想你的代码会声明像9这样的东西是素数,因为你目前只检查一个数字是否可以被2整除 -
没错,它说 9 也是素数。忘记补充了,谢谢!
-
嗯,还有一些问题。现在它说 3 不是质数。
标签: mips32 mars-simulator