Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →