Dobbiamo verificare se k è effettivamente un divisore di N. A tal scopo calcoliamo il resto della divisione (funzione modulo!) fra n e k. Se il resto è zero allora k è un divisore di N

k=2
mentre(k <= √N){
     resto= N modulo k
    ...
    k=k + 1
}

C'è una piccola complicazione. Non ci basta sapere se k è un divisore di N ma vogliamo sapere quante volte k divide N. Facciamo un esempio:

se N=80 la sua scomposizione é 24 * 5 perciò 2 divide 80 quattro volte. Perciò abbiamo bisogno di un contatore che chiameremo exp (valore iniziale 0) e di una ulteriore struttura iterativa che calcoli quante volte k divide N.


k=2
mentre(k <= √N){
    resto = N modulo k
    exp=0
    mentre (resto=0){ 
        exp=exp+1
        N=N/k
        resto=N modulo k // calcoliamo il NUOVO n modulo k ( N è stato modificato)
    }
...
k=k + 1
}
 

Quando usciamo dal ciclo suddetto exp conterrà il valore dell'esponente che però potrà essere anche uguale a zero. Non ci resta altro che visualizzare il valore del divisore k e di exp, ma solo se exp è diverso da zero. Quando usciamo dal ciclo più esterno se N è diverso da 1, lo mostriamo perché è l'ultimo fattore della scomposizione.