Nombres Parfaits
4 participants
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Nombres Parfaits
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/)
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.
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- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Nombres Parfaits
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é.
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- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Nombres Parfaits
Voilà un exemple qui explique l'approche de manianis:
Prenons un exemple, n = 24
Les diviseurs de 24 sont:
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.
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.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Nombres Parfaits
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.
Il y a un gain énorme par rapport à n div 2.
Qu'en pensez-vous ?
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 ?
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Nombres Parfaits
C'est correct, il s'agit d'une optimisation que j'avais prise en compte.
http://manianis.sitesled.com/manisoft/algorithms/nbrpar01.pas
http://manianis.sitesled.com/manisoft/algorithms/nbrpar01.pas
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Nombres Parfaits
Oui vous avez raison, désolée.manianis a écrit:Vous auriez dû poster le sujet comme un exercice.
Merci nabiL et manianis pour l'eclaircissement.
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Nombres Parfaits
Ne t'en fait pas Lamia.lamia a écrit:Oui vous avez raison, désolée.manianis a écrit:Vous auriez dû poster le sujet comme un exercice.
Merci nabiL et manianis pour l'eclaircissement.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Nombres Parfaits
Nous savons qu'il existe une infinité de nombres premiers
Est-il de même pour les nombres parfaits?
... développez ce pointsi ça vous plaisir.
Est-il de même pour les nombres parfaits?
... développez ce point
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Nombres Parfaits
Le nombre est limité pas comme pour les nombres premiers. Voici un extrait de wikipedia:
Et la liste complete : http://amicable.homepage.dk/perfect.htm
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- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Nombres Parfaits
methodiX a écrit:
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Les nombres palindromes
» Exercice: Les nombres circulaires
» Recherche de nombres spéciaux
» Les nombres UNIVERS
» Triangle de nombres
» Exercice: Les nombres circulaires
» Recherche de nombres spéciaux
» Les nombres UNIVERS
» Triangle de nombres
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum