Ce n'est pas faux.. mais c'est comment faire compliqué quand on peut faire plus simple (et un peu optimisé) :)
L'écart minimum entre 2 nombres divisibles par k est k (!!) donc ça ne sert à rien de faire une "recherche" dans la for() avec un pas de 1 (par le i++).
int m = 9;
int n = 23;
int k = 5;
int nb = 0;
if(m%k == 0) {
nb++;
}
for(int i = m+k-m%k; i < n ; i+=k) {
nb++;
}
System.out.println("resultat : "+nb);
Au passage... la boucle for() est complètement inutile pour cet exercice... mais bon on n'est pas là pour noter la débilité de certains exercices :).
Puisque m+k-m%k nous donne le premier nombre A divisible par k et A > m.
De même n-n%k nous donne le dernier nombre B divisible par k et B < n.
Donc (B-A)/k ... avec 2 if() une pour tester si m est divisible par k, et une pour vérifier que A < B (ce qui n'est pas le cas si k > n-m)