AlgoBox : ChainesAmiables

Cet algorithme calcul les K premiers termes (à partir de u(1)) de la suite définie par : u(0)=N et u(n+1)= 1 si u(n)=1 et S(n) si u(n) est différent de 1, S(n) désignant la somme des diviseurs propres de l'entiers naturel N (c'est à dire les diviseurs positifs de N strictement inférieurs à N). Si une telle suite est périodique, on a trouvé une chaîne amiable, la période étant appelé "ordre de la chaîne amiable".

Tester l'algorithme
Cliquer sur ce bouton pour exécuter l'algorithme : 

Résultats

Code de l'algorithme
1   VARIABLES
2     N EST_DU_TYPE NOMBRE
3     I EST_DU_TYPE NOMBRE
4     R EST_DU_TYPE NOMBRE
5     K EST_DU_TYPE NOMBRE
6     J EST_DU_TYPE NOMBRE
7     S EST_DU_TYPE NOMBRE
8     NN EST_DU_TYPE NOMBRE
9   DEBUT_ALGORITHME
10    AFFICHER "Saisir la valeur de l'entier naturel non nul n."
11    LIRE N
12    AFFICHER "Nombre de termes calculés ?"
13    LIRE K
14    AFFICHER "u(0) = "
15    AFFICHER N
16    POUR I ALLANT_DE 1 A K
17      DEBUT_POUR
18      SI (N!=1) ALORS
19        DEBUT_SI
20        S PREND_LA_VALEUR 0
21        NN PREND_LA_VALEUR N
22        POUR J ALLANT_DE 1 A FLOOR(SQRT(NN))
23          DEBUT_POUR
24          R PREND_LA_VALEUR N%J
25          SI (R==0) ALORS
26            DEBUT_SI
27            SI (J!=N/J) ALORS
28              DEBUT_SI
29              S PREND_LA_VALEUR S+J+N/J
30              FIN_SI
31              SINON
32                DEBUT_SINON
33                S PREND_LA_VALEUR S+J
34                FIN_SINON
35            FIN_SI
36          FIN_POUR
37        S PREND_LA_VALEUR S-NN
38        FIN_SI
39        SINON
40          DEBUT_SINON
41          S PREND_LA_VALEUR 1
42          FIN_SINON
43      AFFICHER "u("
44      AFFICHER I
45      AFFICHER ") = "
46      AFFICHER S
47      N PREND_LA_VALEUR S
48      FIN_POUR
49  FIN_ALGORITHME