Page 1 sur 2 12 DernièreDernière
Résultats de 1 à 10 sur 15

Sujet : nombre parfait

  1. #1

    nombre parfait

    svp, un programme qui donne les nombres parfaits de 6 à 10000 sous pascal?
    merci d\'avance.

  2. #2
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    un nombre parfait est un nombre entier qui n\'est divisible (sur division entière) que par lui même ou par 1.
    Ainsi 1,2,3,5,7,11,13,17,19....etc.
    Pour trouver un nombre parfait, on prend les nombres un par un. On divise par les nombres parfaits qui précèdent:
    - si la division n\'a pas de reste entier, le nombre n\'est pas parfait.
    - on s\'arrête lorsque le reste est plus petit que le diviseur.
    moby

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    Désolé de t edécevoir Moby, mais tu confonds nombre parfait et nombre premier.
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    368
    Un nombre parfait c\'est un nombre dont la somme des diviseur est égale à ce meme nombre non?

    C\'est un devoir que tu as reçu? j\'ai l\'algo en java ici. Mais si je te le montre je ne t\'aide pas...

    Alors, pour chaque nombre à tester, tu fais la chose suivante: (de tete)

    considerons N le nombre test, D le diviseur, S la somme des diviseurs

    D = 2
    S = 1
    tant que D < racine de N
    SI N modulo D = 0 ALors
    -ajoute D a somme
    -ajoute N/D a somme
    FIN SI
    INCREMENTER D
    ....

    A la fin
    comparer S avec N

    et il reste une exception, pour 36 par exemple, tu as le diviseur 6 qui va poser probleme, car tu ne peux pas ajouter 6 a la somme et 36/6 sinon il sera deux fois.
    Donc, tu t\'arretes juste avant et tu traites ce cas a part.

    Bon vent.

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    489
    http://membres.lycos.fr/villemingerard/Decompos/SixNbPf.htm

    voila de quoi en apprendre tous les jours

    PowOx

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    368
    Ah ben ca va je suis pas trop loin du compte avec ma mémoire d\'insecte.

  7. #7
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Exact, j\'ai confondu avec nombre premier.
    Je réalise aussi que je ne savais pas ce qu\'était un nombre parfait.
    Je n\'ai pas compris ton explication, pourrait tu me donner quelques nombres parfaits?

    En effet si j\'applique la règle à 36 il ne semble pas y répondre:
    36 = 2*2*3*3
    et 2+2+3+3 = 10 ???
    moby

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    36 n\'est pas un nombre parfait
    36 est divisible par : 1,2,3,4,6,9,12 et 18
    1+2+3+4+6+9+12+18 = 52 != 36

    Par contre 28 est parfait :
    28 est divisible par 1,2,4,7 et 14
    1+2+4+7+14 = 28

    Les huits nombres parfaits entre 1 et mille trillion (10^21) sont :
    6
    28
    496
    8 128
    33 550 336
    8 589 869 056
    137 438 691 328
    2 305 843 008 139 952 128

    Je n\'invente rien j\'ai suivi le lien je ne connssaissais pas non plus.

    Pour la méthode citées plus haut, il existe un petit problème en effet on ne peut s\'arrêter à la racine carré du nombre car on oublierait tous les nombres situés entre elle et la moité du nombre.
    (la méthode de la racine carré se retrouve dans le calcul des nombres premiers).
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    368
    lis jusqu au bout... pas besoin de dépasser la racine carré, et ce pour la raison suivante...

    imaginons 36.

    trouver le diviseur 2 te donne le diviseur 18, le diviseur 4 te donne le diviseur 9, etc...
    ca te fait gagner plus de 2x le nombre de tests, surtout pour les grand nombre.

    si tu lis bien attentivement la methode, tu te rendras compte qu\'elle tient compte de cette subtilité.

  10. #10
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    Rah ouais pardon j\'avais oublié je faisais de tête ta méthode est bonne.

    (t\'as pas répondu sur le sujet de l\'algo de othello)
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

Page 1 sur 2 12 DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé