comment savoir si un nombre est parfait ou non ?

comment savoir si un nombre est parfait ou non ? - Sciences - Discussions

Marsh Posté le 08-09-2003 à 15:09:59    

un nombre est parfait si il est egal a la somme de ses diviseurs excepté lui meme.
 
par exemple 28 est un nombre parfait car divisible par 1, 2, 4, 7 et 14
 
28 = 1 + 2 + 4 + 7 + 14
 
comment mettre ca en equation pour qu a partir de 28 je puisse dire si oui ou non le nombre est parfait ? :/

Reply

Marsh Posté le 08-09-2003 à 15:09:59   

Reply

Marsh Posté le 08-09-2003 à 15:17:40    

Grumly- a écrit :

un nombre est parfait si il est egal a la somme de ses diviseurs excepté lui meme.
 
par exemple 28 est un nombre parfait car divisible par 1, 2, 4, 7 et 14
 
28 = 1 + 2 + 4 + 7 + 14
 
comment mettre ca en equation pour qu a partir de 28 je puisse dire si oui ou non le nombre est parfait ? :/


 
tu fais la liste de tous ses diviseurs et tu les additionnes  [:spamafote]  

Reply

Marsh Posté le 08-09-2003 à 15:20:10    

en gros,  
soit n ce nombre,
pour chaque nombre de 1 à n-1 tu fais la division de n par ce nombre,
si le reste de la division euclidienne est nul, tu ajoutes ce nombre a ton total.

Reply

Marsh Posté le 08-09-2003 à 15:29:22    

nofx59 a écrit :

en gros,  
soit n ce nombre,
pour chaque nombre de 1 à n-1 tu fais la division de n par ce nombre,
si le reste de la division euclidienne est nul, tu ajoutes ce nombre a ton total.


 
De 1 à E(sqrt(n)), ça suffit.
 
E : partie entière supérieure
sqrt : racine carrée


---------------
Serre les fesses jusqu'en 2012...
Reply

Marsh Posté le 08-09-2003 à 15:40:39    

KZimir a écrit :


 
De 1 à E(sqrt(n)), ça suffit.
 
E : partie entière supérieure
sqrt : racine carrée


 
effectivement
j'avais oublié cette optimisation, :)  

Reply

Marsh Posté le 08-09-2003 à 16:09:38    

KZimir a écrit :


 
De 1 à E(sqrt(n)), ça suffit.
 
E : partie entière supérieure
sqrt : racine carrée


D'une part, partie entiere inferieure suffit.
 
D'aute part, je crois qu'il veut une formule explicite, et pas un algorithme/programme. Dans ce cas, la reponse est qu'il n'y en a pas.
sinon, vous n'avez fait que lui repeter que pour connaitre tous les diviseurs, il faut calculer tous les diviseurs... Pas tres informatif...

Reply

Marsh Posté le 08-09-2003 à 16:14:44    

GregTtr a écrit :


D'une part, partie entiere inferieure suffit.
 
D'aute part, je crois qu'il veut une formule explicite, et pas un algorithme/programme. Dans ce cas, la reponse est qu'il n'y en a pas.
sinon, vous n'avez fait que lui repeter que pour connaitre tous les diviseurs, il faut calculer tous les diviseurs... Pas tres informatif...


 
 :jap: c pas grave je vais faire comme dit ci dessus si pas le choix

Reply

Marsh Posté le 08-09-2003 à 16:15:58    

GregTtr a écrit :


D'une part, partie entiere inferieure suffit.
 
D'aute part, je crois qu'il veut une formule explicite, et pas un algorithme/programme. Dans ce cas, la reponse est qu'il n'y en a pas.
sinon, vous n'avez fait que lui repeter que pour connaitre tous les diviseurs, il faut calculer tous les diviseurs... Pas tres informatif...


 
Somme(x pour x dans {div de X})=X c'est une équation explicite, mais ça n'apporte rien. C'est le genre de problème qu'on ne peut traiter qu'algorithmiquement je pense et on lui a donné des pistes [:spamafote]  
 
Quant à la partie entière inférieure, c'est possible, mais j'ai eu un doute, alors, tant qu'à faire :whistle: Après réflexion, tu as raison ;)


---------------
Serre les fesses jusqu'en 2012...
Reply

Marsh Posté le 08-09-2003 à 16:17:36    

KZimir a écrit :


 
Somme(x pour x dans {div de X})=X c'est une équation explicite, mais ça n'apporte rien. C'est le genre de problème qu'on ne peut traiter qu'algorithmiquement je pense et on lui a donné des pistes [:spamafote]  
 
Quant à la partie entière inférieure, c'est possible, mais j'ai eu un doute, alors, tant qu'à faire :whistle: Après réflexion, tu as raison ;)  


 
:jap:

Reply

Marsh Posté le 08-09-2003 à 16:20:13    

GregTtr a écrit :


 
sinon, vous n'avez fait que lui repeter que pour connaitre tous les diviseurs, il faut calculer tous les diviseurs... Pas tres informatif...


 
on ne connait pas forcément ou il en est dans son problème. Il peut très bien parler des diviseurs sans savoir comment les trouver. C'est pour ca que j'ai parlé du reste de la division euclidienne.  [:spamafote]

Reply

Marsh Posté le 08-09-2003 à 16:20:13   

Reply

Marsh Posté le 17-03-2005 à 18:04:58    

bon tu vas tous nous les remonter connard !!

Reply

Marsh Posté le 17-03-2005 à 18:08:28    

Vu qu'il n'existe que 42 nombres parfaits connus, tu peux simplement les lister dans ton programme ;)

Reply

Marsh Posté le 17-03-2005 à 18:25:49    

J'immagine qu'il veut en trouver de nouveux trés grands.
 
Et là on doit pouvoire faire de trés sérieuses optimisations avec de l'algorithmique... Calculer la liste des diviseurs d'un nombre (le factoriser en fait) est un problème difficile (explosion combinatoire) mais je crois qu'il existe des approches moins primitives (enfin pas tellement moins) que le "j'essaye tout".
 
Et pour le cas des nombres parfaits on doit pouvoir démontrer qu'ils vérifient au moins certaines propriétés (par exemple ils ne sont pas premiers) et espérer régler certains cas rapidement.


Message édité par Koko90 le 17-03-2005 à 18:29:24
Reply

Marsh Posté le 17-03-2005 à 18:28:49    

Je me demande si en Prolog il n'y aurait pas moyen de faire ça assez rapidement...

Reply

Marsh Posté le 17-03-2005 à 18:33:36    

Code :
  1. Pythagoras found that a perfect number is the sum of a series of consecutive rational numbers:
  2.        6 = 1 + 2 + 3
  3.       28 = 1 + 2 + 3 + 4 + 5 + 6 + 7
  4.      496 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 ... 30 + 31
  5.    8,128 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 ... 126 + 127


 
Donc si tu veux trouver des nombres parfaits cherche les de cette forme.
 
Déja faire les tests uniquement sur les nombres de ce type va te faire gagner un facteur ENORME. (a moins que ce ne soit une conjecture, faudrait chercher un peux sur internet).


Message édité par Koko90 le 17-03-2005 à 18:37:01
Reply

Marsh Posté le 17-03-2005 à 18:43:47    


 
Quoted  [:dao] Piece a conviction  :jap:

Reply

Marsh Posté le 17-03-2005 à 18:50:16    

Euh ..
Est-ce que tu es déja allé, au moins, sur www.mersenne.org
 
Tu y apprendras que tout nombre parfait pair est de la forme 2^(p-1) * (2^p-1), où 2^p-1 est un nombre premier (dit nombre de Mersenne) (ce qui implique d'ailleurs que p est premier mais la réciproque est fausse).
 
Ex : 28 = 4*7 = 2^(3-1)*(2^3-1) et 7 = 2^3-1 est premier
 
D'autre part, je crois avoir lu dans le dernier "La recherche" que récemment, on vient de démontrer que, si un nombre parfait impair existe, il comporte, au moins 35 millions de chiffre ;)
 
Bon courage pour une recherche de ce type ! ;)

Reply

Marsh Posté le 17-03-2005 à 18:54:41    

Koko90 a écrit :

Code :
  1. Pythagoras found that a perfect number is the sum of a series of consecutive rational numbers:
  2.        6 = 1 + 2 + 3
  3.       28 = 1 + 2 + 3 + 4 + 5 + 6 + 7
  4.      496 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 ... 30 + 31
  5.    8,128 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 ... 126 + 127


 
Donc si tu veux trouver des nombres parfaits cherche les de cette forme.
 
Déja faire les tests uniquement sur les nombres de ce type va te faire gagner un facteur ENORME. (a moins que ce ne soit une conjecture, faudrait chercher un peux sur internet).


 
En fait, ils verifient une propriété encore plus forte, ils sont de la forme 2^n*(2^(n+1)-1) avec n entier et il faut que 2^(n+1)-1 soit un nombre premier  
n=1 ==> 2^(n+1)-1=3 est premier ==> 6 est parfait
n=2 ==> 7 premier ==> 28 est parfait
n=3 ==> 15 pas premier
n=4 ==> 31 premier ==> 496 parfait
n=5 ==> 63 pas premier
n=6 ==> 127 premier ==> 8128 parfait
...
n=12 ==> 33550336 parfait
...
 
Je crois que tous les nombres parfaits connus s'écrivent comme ça, mais on ne sait pas si ce sont les seuls
 
Edit : grilled :kaola:


Message édité par Svenn le 17-03-2005 à 18:56:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed