E' ovvio che col 6 non ti funziona in quanto resti appesa dentro il ciclo while in quanto non ti crei una condizione d'uscita.
puoi fare così
codice:
if(resto!=0) k++;
else break;
il break ti fa uscire fuori dal ciclo oppure potresti crearti una variabile booleana che ti fa questo mestiere.

Altra cosa....devi reinizializzare la varibile k all'inizio del ciclo for altrimenti ti rimarrà sempre incrementata.
codice:
for(int i=giorno; i>=1; i--)  {
    k=2;
    ....
Ciao.