AlgoBox : Puissances et congruences
Tester l'algorithme
Cliquer sur ce bouton pour exécuter l'algorithme : 

Résultats

Code de l'algorithme
1   VARIABLES
2     a EST_DU_TYPE NOMBRE
3     n EST_DU_TYPE NOMBRE
4     r EST_DU_TYPE NOMBRE
5     p EST_DU_TYPE NOMBRE
6     b EST_DU_TYPE NOMBRE
7     a2 EST_DU_TYPE NOMBRE
8   DEBUT_ALGORITHME
9     LIRE a
10    LIRE n
11    p PREND_LA_VALEUR 1
12    r PREND_LA_VALEUR a-floor(a/n)*n
13    a2 PREND_LA_VALEUR r
14    TANT_QUE (r!=1 ET p<=n) FAIRE
15      DEBUT_TANT_QUE
16      b PREND_LA_VALEUR r*a2
17      p PREND_LA_VALEUR p+1
18      r PREND_LA_VALEUR b-floor(b/n)*n
19      SI (r==1) ALORS
20        DEBUT_SI
21        AFFICHER a
22        AFFICHER "^"
23        AFFICHER p
24        AFFICHER " est congru à 1 modulo "
25        AFFICHER n
26        FIN_SI
27      FIN_TANT_QUE
28    SI (r!=1) ALORS
29      DEBUT_SI
30      AFFICHER "il n'existe pas d'entier p tel que "
31      AFFICHER a
32      AFFICHER "^p soit congru à 1 modulo "
33      AFFICHER n
34      FIN_SI
35  FIN_ALGORITHME

Evolution des variables en mode pas à pas
Evolution des variables en mode pas à pas pour la saisie de a=23 et n=18

(ligne 9)  -> a:23 | n:0  | r:0 | p:0 | b:0 | a2:0
(ligne 10) -> a:23 | n:18 | r:0 | p:0 | b:0 | a2:0
(ligne 11) -> a:23 | n:18 | r:0 | p:1 | b:0 | a2:0
(ligne 12) -> a:23 | n:18 | r:5 | p:1 | b:0 | a2:0
(ligne 13) -> a:23 | n:18 | r:5 | p:1 | b:0 | a2:5
Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 15)
(ligne 16) -> a:23 | n:18 | r:5 | p:1 | b:25 | a2:5
(ligne 17) -> a:23 | n:18 | r:5 | p:2 | b:25 | a2:5
(ligne 18) -> a:23 | n:18 | r:7 | p:2 | b:25 | a2:5
La condition n'est pas vérifiée (ligne 19)
Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 27)
Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 15)
(ligne 16) -> a:23 | n:18 | r:7  | p:2 | b:35 | a2:5
(ligne 17) -> a:23 | n:18 | r:7  | p:3 | b:35 | a2:5
(ligne 18) -> a:23 | n:18 | r:17 | p:3 | b:35 | a2:5
La condition n'est pas vérifiée (ligne 19)
Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 27)
Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 15)
(ligne 16) -> a:23 | n:18 | r:17 | p:3 | b:85 | a2:5
(ligne 17) -> a:23 | n:18 | r:17 | p:4 | b:85 | a2:5
(ligne 18) -> a:23 | n:18 | r:13 | p:4 | b:85 | a2:5
La condition n'est pas vérifiée (ligne 19)
Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 27)
Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 15)
(ligne 16) -> a:23 | n:18 | r:13 | p:4 | b:65 | a2:5
(ligne 17) -> a:23 | n:18 | r:13 | p:5 | b:65 | a2:5
(ligne 18) -> a:23 | n:18 | r:11 | p:5 | b:65 | a2:5
La condition n'est pas vérifiée (ligne 19)
Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 27)
Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 15)
(ligne 16) -> a:23 | n:18 | r:11 | p:5 | b:55 | a2:5
(ligne 17) -> a:23 | n:18 | r:11 | p:6 | b:55 | a2:5
(ligne 18) -> a:23 | n:18 | r:1  | p:6 | b:55 | a2:5
La condition est vérifiée (ligne 19)
Entrée dans le bloc DEBUT_SI/FIN_SI (ligne 20)
Sortie du bloc DEBUT_SI/FIN_SI (ligne 26)
Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 27)
La condition n'est pas vérifiée (ligne 28)

Affichages : 23^6 est congru à 1 modulo 18