next up previous contents index
suivant: Traduction Xcas monter: La fonction "estpremier" précédent: La fonction "estpremier"   Table des matières   Index

Traduction Algorithmique

- Premier algorithme
On va écrire un fonction booléenne de paramètre N, qui sera égale à VRAI quand N est premier, et, à FAUX sinon.
Pour cela, on cherche si N posséde un diviseur différent de 1 et inférieur ou égal à E($ \sqrt{{N}}$) (partie entière de racine de N).
On traite le cas N=1 à part !
On utilise une variable booléenne PREM qui est au départ à VRAI, et qui passe à FAUX dès que l'on rencontre un diviseur de N.
Fonction estpremier(N)
local PREM, I, J
E($ \sqrt{{N}}$) ->J
Si N = 1 alors
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
2->I
tantque PREM et I $ \leq$J faire
  si N mod I = 0 alors
     FAUX->PREM
     sinon
     I+1->I
  fsi 
ftantque
retourne PREM
ffonction
-Première amélioration
On peut remarquer que l'on peut tester si N est pair, et ensuite, tester si N posséde un diviseur impair.
Fonction estpremier(N)
local PREM, I, J
E($ \sqrt{{N}}$) ->J
Si (N = 1) ou (N mod 2 = 0) et N$ \neq$2 alors
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
3->I
tantque PREM et I $ \leq$J faire
  si N mod I = 0 alors
     FAUX->PREM
     sinon
     I+2->I
  fsi 
ftantque
retourne PREM
ffonction
- Deuxième amélioration
On regarde si N est divisible par 2 ou par 3, sinon on regarde si N posséde un diviseur de la forme k - 1 ou k + 1 (pour k $ \in$ $ \mathbb {N}$).
Fonction estpremier(N)
local PREM, I, J
E($ \sqrt{{N}}$) ->J
Si (N = 1) ou (N mod 2 = 0) ou ( N mod 3 = 0) alors
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
si N=2 ou N=3 alors 
VRAI->PREM
fsi
5->I
tantque PREM et I $ \leq$J faire
  si (N mod I = 0) ou (N mod I+2 =0) alors
     FAUX->PREM
     sinon
     I+6->I
  fsi 
ftantque
retourne PREM
ffonction

next up previous contents index
suivant: Traduction Xcas monter: La fonction "estpremier" précédent: La fonction "estpremier"   Table des matières   Index
Documentation de giac écrite par Renée De Graeve