Grazie a tutti

Prendo il source di Null come base perchè è in C semplice...da buon fagiano partono le domandone di chiarimento

1) Ho sostituito l'assegnamento random di "numero"
codice:
srand ( (unsigned) time ( NULL ) );
int numero = rand ( ) % 10000;
Con un semplice valore per scanf
codice:
int numero;
scanf ("%d", &numero);
Ma i risultati (cambiando solo quello) lasciano perplessi...perchè!?
codice:
[maiosyet]@[alcibiade]-[~/Sorci/Fattori] ./Prova.bin
Inserire numero da fattorizzare
999
999 (1206604416) e' divisibile per 2 (resta 603302208).
999 (603302208) e' divisibile per 2 (resta 301651104).
999 (301651104) e' divisibile per 2 (resta 150825552).
999 (150825552) e' divisibile per 2 (resta 75412776).
999 (75412776) e' divisibile per 2 (resta 37706388).
999 (37706388) e' divisibile per 2 (resta 18853194).
999 (18853194) e' divisibile per 2 (resta 9426597).
999 (9426597) e' divisibile per 3 (resta 3142199).
999 (3142199) e' divisibile per 41 (resta 76639).
999 (76639) e' divisibile per 173 (resta 443).
999 (443) e' divisibile per 443 (resta 1).
[maiosyet]@[alcibiade]-[~/Sorci/Fattori]
Fa tutto sto casino, ma conclude sempre con 443, qualsiasi numero io gli dia...

Poi ci sono alcune parti di codice che non ho capito

codice:
if ( ! ( n_attuale % i ) ) {
Questo pezzo dice: Se il resto di n_attuale / i è diverso da...? Da cosa?

E poi
codice:
n_attuale /= i;
continue;
Questa istruzione è come dire
codice:
n_attuale = n_attuale / i
?

Ultima cosa: al posto che un valore sentinella per uscire dal ciclo, hai messo continue...ma come funziona? :master:

Grazie