Tu calcules le modulo sur le reste suivant.
Dans la boucle, inverse le calcul du modulo et du reste.
Et comme déjà dit, ton test de sortie de boucle n'est pas bon.