Advertisement
Guest User

Untitled

a guest
Dec 1st, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data
  2.     p: .word 4
  3.     Input: .asciiz "Input Incorect"
  4.     Primality: .asciiz "Numarul"
  5.     Primality1: .asciiz "nu este prim"
  6.     Space: .asciiz " "
  7.  
  8. .text
  9.  
  10.  
  11. main:
  12.     li $t0, 0
  13.     li $v0, 5      
  14.     syscall
  15.     move $s0, $v0           #mutam in t0 nr. citit
  16.     sub $s1, $s0, 1
  17.     ble $s0, $t1, Input_Incorect    #comparam nr citit cu 2//
  18.    
  19.     j Primality_Test
  20.  
  21.  
  22. Primality_Test:
  23.     move $t9, $s0
  24.     li $t1, 2          
  25.     div $t2, $t9, 2        
  26.     add  $t2, $t2, 1
  27.    
  28.     j Loop
  29.  
  30.        
  31. Loop:
  32.     bge $t1, $t2, Generator     #cu $t1 parcurg nr. >2 si <[p/2]+1, iar cand termin de cautat divizori, caut generator
  33.     rem $t3, $s0, $t1       #in $t3 pastrez restul
  34.     beq $t3, $0, Error      #conditie pt a verifica daca numarul P are divizor
  35.     addi $t1, $t1, 1        #crestem contorul
  36.    
  37.     j Loop
  38.  
  39.  
  40. Generator:         
  41.     li $t1, 1           #in $t1 parcurg eventualii generatori (i)  
  42.     li $t5, 1
  43.    
  44.     j Loop1
  45.    
  46.    
  47. Loop1:     
  48.     li $t3, 1           #$t3 retine i^j
  49.     addi $t1, $t1, 1
  50.     bgt $t1, $s1, Nimic     #Eticheta nu ma duce nicaieri, deoarece obligatoriu voi gasi un generator
  51.     beq $t4, $t5, Afis_Generator    #Eticheta imi va afisa generatorul cand voi finaliza parcurgerea potentialilor generatori
  52.     li $t6, 0
  53.     j Loop2
  54.  
  55.        
  56. Loop2:
  57.     bge $t6, $s1, Loop1     #$t6 retine valorile de tip j, la care ridicam generatorul
  58.     addi $t6, $t6, 1
  59.     mul $t3, $t3, $t1
  60.     bgt $t3, $s0, Calcul_MOD    #daca i^j depaseste P, aplicam operatia MOD P
  61.    
  62.     j Loop2
  63.    
  64. Calcul_MOD:
  65.     rem $t2, $t3, $s0
  66.     beq $t2, $t5, Generator2
  67.    
  68.     j Loop2
  69.    
  70. Generator2:
  71.     beq $t6, $s1, Afis_Generator
  72.    
  73.     j Generator2.2
  74.    
  75. Generator2.2:
  76.     bne $t6, $s1, Loop1
  77.    
  78.     j Loop2
  79.  
  80.    
  81. Afis_Generator:
  82.     move $a0, $t1
  83.     li $v0, 1
  84.     syscall
  85.  
  86.     j Terminate
  87.    
  88.  
  89.  
  90.  
  91. Nimic: 
  92.     j Terminate
  93.    
  94.    
  95. Error:
  96.     la $a0, Primality
  97.     li $v0, 4
  98.     syscall
  99.     la $a0, Space
  100.     li $v0, 4
  101.     syscall
  102.     move $a0, $s0
  103.     li $v0, 1
  104.     syscall
  105.     la $a0, Space
  106.     li $v0, 4
  107.     syscall
  108.     la $a0, Primality1
  109.     li $v0, 4
  110.     syscall
  111.  
  112.     j Terminate
  113.  
  114. Input_Incorect:
  115.     la $a0, Input
  116.     li $v0, 4
  117.     syscall
  118.    
  119.     j Terminate
  120.  
  121. Terminate:
  122.     li $v0, 10
  123.     syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement