nombre parfait

Bonsoir tout le monde,
1) Je précise avant toute chose que je suis très très ignorant en informatique.

J'ai un programme sur ma voyage 200 (dans le cadre de l'oral 2 du capes) qui me permet de faire la somme des diviseurs d'un nombre entier (c'est sdiv(n)), et je me sert de ce programme pour en créer un autre sur les nombres parfaits.
Mon but est de créer un programme qui teste si un nombre est parfait ou non.
Avant de faire celà, je désire déjà, lister les nombres parfaits compris entre deux entiers n et m par exemple, voilà ce que j'ai:

listparf(n,m)
func
\quad local i,l
\quad \{\}->l
\quad For i,n,m
\quad \quad if sdiv(i) > 2*i then
\quad \quad \quad augment(l,\{i\})->l
\quad \quad Endif
\quad Endfor
\quad Return l
endfunc

Mais il ne fonctionne pas, quand je lui dis listpart(1,7) il me donne \{\} alors qu'il devrait donner 6.
et quand je dis listpart(1,50) il met genre 30secondes pour me sortir : \{12,18,20,24,30,36,40,42,48\}
alors qu'il ne me faudrait que \{6,28\}...c'est embêtant quand même !

Si quelqu'un si connait un peu et a le temps de me filer un coup de main, je suis preneur !
(et si quelqu'un a sous la manche un programme direct qui teste si un entier est parfait, ce serait nikel ! :) )
Merci d'avance !

[Il ne vaut mieux pas cocher LaTeX quand il n'y en a pas. Sinon, il faut banaliser les caractères spéciaux : \verb=\{ et \}=. ;) AD]

Réponses

  • par ailleurs,y'a un programme qui semble tout fait ici:

    http://www.calctech.org/PDF/calculatrices_scolaires/annexes/programmes/arithmetique/NB_PAR.pdf

    mais je ne sais pas l'adapter au langage de ma voyage 200...:S
  • Bonsoir Robby

    Si dans ton "if" tu remplaçais ">" (supérieur strict) par un test d'égalité ("=" ou "==" selon la syntaxe), cela marcherait certainement beaucoup mieux.

    Alain
  • Bonjour,
    Alain a raison: en fait tu liste les nombres abondants avec ton test... L'étude peut être intéressante, mais ce n'est pas celle que tu dois mener...
    Le quatrième nombre parfait, 8 mille et des poussières, je te laisse le plaisir de la découverte, peut être atteint avec une V200... avec de la patience et des piles en état.
    Le cinquième est définitivement inaccessible, enfin par une recherche exhaustive à la calculatrice. Mais si on fait des maths à partir des résultats obtenus, on peut aller très loin!
    Christian V
    PS la TI-nspire est beaucoup plus rapide sur ce type de problème...
  • Bonjour AD et Monsieur Vassard
    et merci AD, effectivement ça marche nikel avec un = (:D
    je trouve bien par exemple que les nombres parfaits entre 1 et 7, et bien c'est 6...
    ou entre 1 et 50,on a 6 et 28...
    aprés 3minutes il trouve meme 496...B-)

    par contre,je me demandais,si vous aviez une idée quant à un programme qui testerais si un entier est parfait ou non?
    peut-etre meme en utilisant mon programme précédent...(mais je crains que pour un nombre assez grand,ça plante!):S
    merci déjà de votre aide!
  • La grosse difficulté dans ce genre de problème consiste à factoriser le nombre en facteurs premiers pour en découvrir tous les diviseurs.
    Ton programme "sdiv" fais déjà cela (mais n'est peut-être pas optimal).
    Ensuite, le test pour savoir si un nombre est parfait est justement celui que tu fais dans ton programme "listparf" : sdiv(i)=2*i.
    Si c'est vrai, i est parfait et sinon, il ne l'est pas !
  • Salut Bisam !
    En fait, après quelques recherches, on sait qu'un nombre parfait est de la forme $2^{n-1}(2^n-1)$ avec $2^n-1$ qui est premier, mon idée serait d'utiliser ceci dans un programme.
    En fait, on prendrait un entier naturel, on regarde si on peut le mettre sous la forme $2^{n-1} (2^n-1)$ et on regarde ensuite si $2^n-1$ est premier et alors, on en déduirait que $n$ est parfait.
    Je ne sais pas si c'est une bonne idée... et surtout, je ne sais absolument pas comment mettre en œuvre tout ça ! :-(
  • {\it En fait, après quelques recherches, on sait qu'un nombre parfait est de la forme $2^{n-1}(2^n-1)$ avec $2^n-1$ qui est premier}

    Correction : "on sait qu'un nombre parfait {\bf pair} est $\dotsc$"


    Borde.
  • Disons "on sait qu'un nombre parfait calculable avec une TI-200 est $\dotsc$"
  • Bonjour Borde et Le barbu rasé.
    Effectivement, mais connais tu un nombre parfait impair?:P

    sinon,je crois que j'ai trouvé enfin mon bonheur...
    je vais introduire les nombres de Mersenne dans tout ça...:D puisque rechercher les nombres parfaits (pairs donc), revient à trouver les $2^n-1$ qui sont premiers...:)
  • Bonjour,
    On ne connaît pas de nombres parfaits impairs actuellement... Borde a sûrement plus de précisions que moi en la matière, mais les contraintes qui pèsent sur un tel nombre repoussent chaque fois un peu plus les limites de son domaine d'existence possible... Ceci étant au regard de l'infinité des nombres entiers, on peut dire qu'on n'est pas beaucoup plus avancé... puisque la question de l'existence ou non d'un tel entier reste posée.

    Sinon pour ce qui est de ton problème, pars plutôt d'un entier n, teste si 2^n-1 est premier... si oui tu as la possibilité de fabriquer un nombre parfait pair et réciproquement un nombre parfait pair est de cette forme (la démonstration est simple, enfin pas trop compliquée, et due à Euler pour la première fois). Là pour le coup, comme le test isprime de la calculatrice est assez performant, tu vas générer un bon paquet de nombres parfaits, inaccessibles avec le procédé précédent. Enfin un bon paquet... 12-13 je crois, parce qu'ils sont assez rares, les nombres parfaits, comme les hommes parfaits sans doute!
    Bien cordialement,
    Christian
  • On ne connaît pas de nombres parfaits impairs actuellement... Borde a sûrement plus de précisions que moi en la matière, mais les contraintes qui pèsent sur un tel nombre repoussent chaque fois un peu plus les limites de son domaine d'existence possible... Ceci étant au regard de l'infinité des nombres entiers, on peut dire qu'on n'est pas beaucoup plus avancé... puisque la question de l'existence ou non d'un tel entier reste posée.
    > En fait s'il en existait un, on sait qu'il aurait au moins 11 facteurs premiers distincts (Hagis 1983), il aurait un facteur premier supérieur à 300 000 et il serait supérieur à $10^{300}$ (Brent-Cohen-Ricle), mais on ne sait toujours pas s'il en existe. :)

    En ce qui concerne mon programme, j'ai fait un truc qui marche plutôt pas trop mal :

    lpar(m)
    Func
    \quad Local l,n
    \quad \{\}->l:2->n
    \quad While 2^(n-1)(2^n-1)< m
    \quad \quad If isPrime(n) Then
    \quad \quad \quad If isPrime(2^n-1) Then
    \quad \quad \quad \quad augment(l,\{2^(n-1)(2^n-1)\})->l
    \quad \quad \quad EndIf
    \quad \quad EndIf
    \quad \quad n+1->n
    \quad EndWhile
    \quad Return l
    EndFunc

    Ainsi, lparf(9) donne \{6\}
    lparf(5000)=\{6 28 496\} et ceci assez rapidement
    et même lparf(100000000)=\{6,28,496,8128,33550336\}
    J'ai même lparf(10000000000000000000000000) !!!
    et même plus loin, le dernier parfait que j'obtiens est
    2658455991569831744654692615953842176...
    Ce n'est pas mal quand même je trouve.
    Ainsi pour tester si un nombre m est parfait, il me suffira juste de savoir s'il se trouve dans lparf(m+1), et je pense que mon programme trouve des nombres parfaits assez grand avec un temps très très raisonnable !
    Donc ça devrait le faire ! :D
  • j'obtiens meme en moins de 2minutes celui-là:

    14 474 011 154 664 524 427 946 373 126 085 988 481 573 677 491 474 835 889 066 354 349 131 199 152 128

    ::o
  • Impeccable!

    Comme quoi la calculatrice est un magnifique outil... mais quand on fait des maths derrière on va vraiment beaucoup plus loin!

    Pour les nombres parfaits impairs, j'avais ces références là (limitation sur la taille du nombre ou sur le nombre de facteurs premiers) mais je suis sûr que Borde a des résultats plus récents... s'ils existent...

    Très beau sujet pour l'utilisation d'une calculatrice comme la V200 qui gère les entiers longs.

    Bien cordialement

    Christian

    PS: le document que j'avais rédigé à l'IUFM de Rouen
  • ah bah tiens!
    sur votre document, on retrouve exactement les mêmes programmes que moi, mon prof semble utiliser vos sources!:D:P
    (il m'a guidé pour tout les programmes...)
    Merci en tout cas de votre aide!(tu)
  • Je n'ai pas de résultats plus récents que ceux de Robby, sauf que le 3ème auteur doit être sans doute Te Riele, et non Ricle. Robby, tu confirmes ? Rappelons que Te Riele est passé à la postérité en 1985 après avoir infirmé, dans un travail commun avec Odlyzko, la conjecture de Mertens (l'algorithme LLL a joué un rôle important dans cette infirmation. Voir un exposé en ligne de Te Riele sur ce sujet, c'est très bien fait et très intéressant).

    Mentionnons quand même le (important) résultat de Pomerance (1977) : pour tout entier $k \geqslant 1$, si un nombre parfait impair $N$ vérifie $\omega(N)=k$ (autrement dit si $N$ a $k$ facteurs premiers distincts), alors on a :

    $$N < (4k)^{(4k)^{2^{k^2}}}.$$

    Rappelons aussi la conjecture d'Ore, qui fut en son temps une idée très intéressante : {\it si un entier $N$ est impair, alors sa moyenne harmonique} (i.e. la somme des diviseurs de $N$ divisée par la somme des inverses des diviseurs de $N$) {\it n'est pas un entier}. Si cette conjecture est vraie, il en découle qu'il n'existe pas de nombre parfait impair.


    Borde.
  • très intéressant Borde!
    malheureusement, je ne peux pas confirmer vu que je ne suis pas sur, je pense que tu as raison.
    A ce jour, personne n'a réussi à démontrer la conjecture d'Ore?

    c'est quand même bien le monde des maths!:D

    Merci pour cette culture Borde!:)-D
  • {\it A ce jour, personne n'a réussi à démontrer la conjecture d'Ore?}

    Non, pas à ma connaissance.

    Voilà du boulot pour toi ou Sylvain ou Deufeufeu...ou les trois ensembles B-)-


    Borde.
  • ::o pas pour moi non!
    je n'ai pas assez de connaissance voyons!:S
    mais quand Sylvain aura trouvé, je viendrais voir ce que ça donne:)o:P
  • Jolies précisions Borde, fort intéressantes... C'est beau les maths non?
    Je savais bien que tu aurais quelques "bricoles" à sortir de ta hotte d'arithméticien!
    Beau sujet à travailler, où la calculatrice et la réflexion mathématique se mêlent admirablement bien!
    Cordialement,
    Christian
  • Bonsoir Christian,

    {\it Je savais bien que tu aurais quelques "bricoles" à sortir de ta hotte d'arithméticien! }

    Hé oui : je ne peux pas m'empêcher de bavarder...::o

    Borde.
  • Bonjour,

    Un théorème d'Euler sur les nombres parfaits impairs:

    Un nombre parfait impair est de la forme $m=p^{4a+1}q^2$ où $p$ premier impair est premier avec $q$.

    Amicalement.
  • :S il en existe donc?
    c'est quoi a bs?
  • Bonjour,

    C'est un exercice proposé par Ross Honsberger dans Joyaux Mathématiques -Volume 1, page 124, sans autre précision.

    Ce que veut certainement signifier notre genius suisse, c'est que s'il existe de tels nombres, alors ils vérifient cette propriété.

    Amicalement.
  • borde écrivait:
    > {\it A ce jour, personne n'a réussi à démontrer la
    > conjecture d'Ore?}
    >
    > Non, pas à ma connaissance.
    >
    > Voilà du boulot pour toi ou Sylvain ou
    > Deufeufeu...ou les trois ensembles B-)-
    >
    >
    > Borde.

    héhé soit tu es taquin soit tu me surestimes... dans le premier cas c'est de bonne guerre, dans le second cas je suis très loin d'avoir tes connaissances et compétences en la matière.
  • {\it soit tu es taquin soit tu me surestimes}

    C'était plutôt un (amical) clin d'oeil...sachant que, de toute façon, ce type de problème est (à mon avis) hors de portée (de n'importe qui) actuellement...

    Quant à l'intervention de Bernard ci-dessus, il faut effectivement comprendre que, {\it si} $n$ est parfait impair, {\it alors} il possède la structure indiquée par Euler...ce qui, bien sûr, ne présage en rien quant à l'existence de nombres parfaits impairs.

    A plus,

    Borde.
  • Bonjour,

    dans l'inégalité citée par borde, je suis impressionné par le membre de droite, mais est-elle dans le bon sens?

    S
  • Bonjour Samok,

    Voilà l'article de Pomerance auquel je faisais allusion :

    http://www.math.dartmouth.edu/\~{}carlp/PDF/paper13.pdf

    La preuve utilise un théorème dû à Baker qui donne une majoration effective de solutions de formes linéaires en logarithmes.


    Borde.
  • Merci borde,

    il n'y a donc pas de bug, dans l'autre sens $N>...$ cela s'interprétait par :
    "Vous en cherchez un impair ? Avec combien de facteurs premiers ? Ah ouais, ... Bon courage alors ..."

    Mais ça dit quand même quelque chose dans ce sens, l'ordinateur peut tester, au début en tout cas.

    S
  • Où peut-on trouver la démonstration d'Euler ?
    Merci.
    Miki
  • Bonsoir,

    Direction QDL N°28.

    Amicalement.
  • Je souhaite écrire un programme assembleur qui vérifie si le nombre fourni par l'utilisateur est parfait ou non ?
    Je n'arrive pas à trouver les boucles que je peux utiliser dans ce programme mips.
    Merci de votre aide
  • Quels sont les nombres parfaits compris entre 20 et 30 ? merci
  • Il n'y a que 28.
Connectez-vous ou Inscrivez-vous pour répondre.