Nombre parfait

Fermé
Colinour - 13 oct. 2021 à 22:41
 Utilisateur anonyme - 16 oct. 2021 à 06:25
Bonjour,

Comment on définit qu’un nombre est parfait avec java orienté objet s’il vous plaît merci je vois de réponse par rapport à JavaScript seulement
A voir également:

2 réponses

Utilisateur anonyme
14 oct. 2021 à 07:28
Bonjour

commence par le faire mathématiquement.
Une fois fait, tu pourras le transcrire dans n'importe quel langage.


PS on ne dit pas "java orienté objet" mais simplement "java".
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié le 15 oct. 2021 à 15:12
Bonjour,

Certains diront que c'est de la triche, mais en réalité ceci est l'implémentation la plus performante vu que la liste des premiers nombres parfaits est déjà connue : https://oeis.org/A000396
public static boolean isPerfect(long n) {
    return n == 6L
        || n == 28L
        || n == 496L
        || n == 8128L
        || n == 33550336L
        || n == 8589869056L
        || n == 137438691328L
        || n == 2305843008139952128L;
}

Pour aller plus loin, si on parle d'orienté objet, c'est par "opposition" à la programmation impérative, et donc tirer profit au maximum des classes/méthodes fournies par Java.

S'il fallait recalculer soi même ces différentes valeurs on pourrait par exemple écrire le code suivant, dont l'algorithme est certes naïf, mais son implémentation optimisée par Java, notamment avec le multithreading.
import java.util.stream.LongStream;

public static boolean isPerfect(long n) {
    return LongStream.rangeClosed(1, n / 2).parallel()
                     .filter(i -> n % i == 0).sum() == n;
}

0
Utilisateur anonyme
16 oct. 2021 à 06:25
Salut oui bien sûr.

Cela dit, je pense que notre ami Colinour débute et qu'il s'git d'un exercice.
S'il montre ça à son prof, il va se faire appelé Arthur....
0