NOMBRES - Curiosités, théorie et usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 04/06/2014

Orientation générale        DicoMot Math          Atlas                   Références                     M'écrire

Barre de recherche          DicoCulture              Index alphabétique                               

     

Diviseurs

 

Débutants

Nombres parfaits

Nombres parfaits

 

Glossaire

Général

 

 

INDEX

 

Décomposition

Diviseurs

 

Parfait

Programmation

Démonstration

Liste

 

Sommaire de cette page

>>> Programmes avec "for"

>>> Programme   avec "while"

 

 

 

NOMBRES PARFAITS

 

Principe de la recherche par logiciel.

Exemples de programmes simples. 

 

 

 

Programmes de recherche des nombres parfaits

 

Avec un logiciel de calcul (comme Mapple)

 

 

*      Le premier programme divise le nombre N par tous les nombres (i) jusqu'à N et ne retient que ceux qui sont divisibles (les diviseurs). Ces valeurs sont cumulées dans S. En final, il suffit de comparer cette somme des diviseurs avec le nombre initial N.

*      Le second programme utilise une fonction intégrée dans le package (numtheory) qui donne immédiatement la somme des diviseurs (sigma). 

 

Notes: les instructions evalf (calculer la valeur avec des décimales) et floor (donner la valeur entière) sont nécessaire du fait de la présence de la division. Sinon, le logiciel conserve la valeur littérale (comme 1/2 au lieu de 0,5).

 

 

 

Programmation sans boucle explicite

(utilisation du "pendant que" = while en anglais)

 

*      Cette version n'a qu'un but pédagogique. Elle peut être transcrite sur le logiciel dont vous disposez.  

 

Algorithme

  Initialisation

N:=         Valeur entrée par l'utilisateur

NN:= N   Mémorisation du nombre N

Div:= N   Explore toute les possibilités de N à 1

S:=1        Somme des diviseurs

  Boucle jusqu'à FIN

N:= NN

Div:= Div – 1

Si Div =1 et N = S alors imprimer N.

Si Div =1 alors FIN

 N:= N / Div

Si Reste  0,

alors aller en début de boucle.

Sinon S:= S + N/Div et

aller en début de boucle.

 

Programme

 

Ce qui donne (pas à pas pour n = 6)

 

 

NN

N

r

Div

S

Init

6

6

 

6

1

N:= NN, Div:= Div – 1

 

6

 

5

N:= N/Div

 

6/5

 

N:= NN, Div:= Div – 1

 

6

 

4

N:= N/Div

 

6/4

 

N:= NN, Div:= Div – 1

 

6

 

3

N:= N/Div

 

6/3 = 2

0

S:=S+N/Div;

 

 

1 + 2 = 3

N:= NN, Div:= Div – 1

 

6

 

2

N:= N/Div

 

6/2 = 3

0

S:=S+N/Div;

 

 

3 + 3 = 6

N:= NN, Div:= Div – 1

 

6

 

1

N = S?

 

 

OUI

 

 

 

 

 

 

Retour

*    Nombres parfaits

*    Calculs avec les parfaits (Frénicle et Fermat)

Voir

*    ProgrammationIndex

Cette page

*       http://villemin.gerard.free.fr/Wwwgvmm/Decompos/ParfProg.htm