Nombres Parfaits

Voir le sujet précédent Voir le sujet suivant Aller en bas

Nombres Parfaits

Message par lamia le Lun 28 Jan - 23:06

Un nombre parfait est un nombre entier n strictement supérieur à 1 qui est égal à la somme de ses diviseurs.

exemples :

6 est un nombre parfait ==> 6 = 1 + 2 + 3
28 est un nombre parfait ==> 28 = 1 + 2 + 4 + 7 + 14


Voilà une solution proposée par Manianis (dans http://manianis.sitesled.com/)
Code:

(************************************************************************************)
(* Algorithme de recherche des nombres parfait (Classique)                          *)
(*----------------------------------------------------------------------------------*)
(* Auteur  : MANI Mohamed Anis                                                      *)
(************************************************************************************)

program nombre_parfaits; uses wincrt;

function Est_Parfait(n : longint):boolean;
var p : boolean;
        s, i, f : longint;
begin
        s:=1; f:= n div 2;
        for i:=2 to f do
                  if (n mod i = 0) then s:=s+i;
        Est_Parfait := (s = n);
end;

var i, n : longint;
begin
        Writeln('Recherche de nombres parfaits classique');
       
        Write('Entrer un entier n positif : '); Readln(n);
        for i:=1 to n do
        begin
                  if Est_Parfait(i) then
                            writeln(i);                                                   
        end;
end.


Bon j'ai une question sur ce code: pourquoi la limite f de la boucle for est le resultat de la division entiére du nombre en question par 2 (f:=n div 2)? Et es ce que c'est la seule limite qu'on peut avoir ou c'est juste une proposition?

Merci Manianis pour cette solution.
Et merci d'avance.

lamia
Admin
Admin

Sexe:FémininViergeTigre
Messages : 1429
Inscrit le : 04 Nov 2007
Age : 22
Localisation : Tunis

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par manianis le Lun 28 Jan - 23:54

Pas de quoi Lamia. C'est gentil de votre part. Vous auriez dû poster le sujet comme un exercice.

En Fait : Un nombre parfait est égal à la somme de ses diviseurs sauf lui même.

Il est clair que le diviseur maximal d'un nombre entier est sa moitié.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par nabiL le Mar 29 Jan - 9:24

Voilà un exemple qui explique l'approche de manianis:
Prenons un exemple, n = 24
Les diviseurs de 24 sont:
Code:
1 et 24
2 et 12
3 et 08
4 et 06


On remarque que le plus grand diviseur différent de 24 est sa moitié 12. Donc, il est inutile de parcourir tous les nombres i inférieurs à n pour trouver ses diviseurs.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par nabiL le Mar 29 Jan - 9:31

Sauf que j'ai une remarque très importante à propos du n div 2.

On peut faire beaucoup mieux manianis et se contenter d'arrêter la recherche à Racine de n.

Code:
  s := 1;
  i := 2;
  while (i <= sqrt(n)) do
  begin
      if (n mod i=0) then
        s := s + i + (n div i);
      i := i + 1;
  end;



Il y a un gain énorme par rapport à n div 2.

Qu'en pensez-vous ?
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par manianis le Mar 29 Jan - 11:35

C'est correct, il s'agit d'une optimisation que j'avais prise en compte.

http://manianis.sitesled.com/manisoft/algorithms/nbrpar01.pas

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par lamia le Mar 29 Jan - 22:03

manianis a écrit:Vous auriez dû poster le sujet comme un exercice.

Oui vous avez raison, désolée.


Merci nabiL et manianis pour l'eclaircissement.

lamia
Admin
Admin

Sexe:FémininViergeTigre
Messages : 1429
Inscrit le : 04 Nov 2007
Age : 22
Localisation : Tunis

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par manianis le Mar 29 Jan - 22:50

lamia a écrit:
manianis a écrit:Vous auriez dû poster le sujet comme un exercice.

Oui vous avez raison, désolée.
Merci nabiL et manianis pour l'eclaircissement.

Ne t'en fait pas Lamia. queen

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par methodiX le Mer 30 Jan - 0:17

Nous savons qu'il existe une infinité de nombres premiers
Est-il de même pour les nombres parfaits?

... développez ce point si ça vous plaisir.
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par lamia le Mer 30 Jan - 0:27

Le nombre est limité pas comme pour les nombres premiers. Voici un extrait de wikipedia:


Les 4 premiers nombres parfaits sont connus depuis l'antiquité. Depuis, le total est passé à 44 nombres parfaits seulement (au 11/09/2006).
Les douze premiers nombres parfaits sont :


  • 6 = 1 + 2 + 3
  • 28 = 1 + 2 + 4 + 7 + 14
  • 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
  • 8 128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1 016 + 2 032 + 4 064
  • 33 550 336
  • 8 589 869 056
  • 137 438 691 328
  • 2 305 843 008 139 952 128
  • 2 658 455 991 569 831 744 654 692 615 953 842 176
  • 191 561 942 608 236 107 294 793 378 084 303 638 130 997 321 548 169 216
  • 13 164 036 458 569 648 337 239 753 460 458 722 910 223 472 318 386 943 117 783 728 128
  • 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


Et la liste complete : http://amicable.homepage.dk/perfect.htm
¤´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·`¤... Lamia

lamia
Admin
Admin

Sexe:FémininViergeTigre
Messages : 1429
Inscrit le : 04 Nov 2007
Age : 22
Localisation : Tunis

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par methodiX le Jeu 31 Jan - 21:47

Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombres Parfaits

Message par manianis le Jeu 31 Jan - 22:40

methodiX a écrit:

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum