programmation Java (école d'ingénieur) · Chapitre 3 · Exercice de TD
Nombres parfaits
Instructions de contrôle · niveau 3 (difficile)
Énoncé
Un entier est parfait s'il est égal à la somme de ses diviseurs autres que lui-même (). Afficher les nombres parfaits jusqu'à . Pour aller vite, on ne cherchera les diviseurs que jusqu'à , en ajoutant à chaque diviseur trouvé son associé .
Corrigé
public class Parfaits {
public static void main(String[] args) {
for (int n = 2; n <= 10000; n++) {
int somme = 1; // 1 divise tout n >= 2
for (int d = 2; d * d <= n; d++) {
if (n % d == 0) {
somme += d;
if (d != n / d) {
somme += n / d; // le diviseur associé
}
}
}
if (somme == n) {
System.out.print(n + " ");
}
}
System.out.println();
}
}
6 28 496 8128
Les diviseurs vont par paires avec ; quand (si est un carré), il ne faut le compter qu'une fois. On part de et non de , puisque lui-même n'est pas compté. La boucle intérieure fait environ tours au lieu de : pour , au lieu de .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.