Différences entre versions de « Php algo td5 »
(Page créée avec « = Introduction = On cherche à trouver tous les nombres premiers inférieurs à un entier n fixé. L’algorithme du crible d’Ératosthène consiste à barrer, dans la l... ») |
|||
Ligne 36 : | Ligne 36 : | ||
= Partie A = | = Partie A = | ||
== Exercice 1 == | == Exercice 1 == | ||
+ | Écrire une fonction ''init_tab(n)'' dont le paramètre est un entier ''n''. Cette fonction renvoie une liste ''T'' de taille ''n'' représentant les booléens « false », « false » puis « true ». | ||
+ | |||
+ | <u>Exemple :</u> | ||
+ | |||
+ | ''init_tab(15)'' = | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px"> | ||
+ | <big>Exercice 1</big> | ||
+ | <source lang="text" style="border:1px solid black;font-size:130%" class="mw-collapsible-content"> | ||
+ | FONCTION code_mot_chiffre(mot) | ||
+ | VAR | ||
+ | resultat : liste d'entiers | ||
+ | trouve: booléen | ||
+ | i, j : entier | ||
+ | j <- 0 | ||
+ | |||
+ | POUR TOUT j DE mot FAIRE | ||
+ | i <- 0 | ||
+ | trouve <- faux | ||
+ | TANT QUE !trouve | ||
+ | SI alphabet[i] = mot[j] | ||
+ | resultat[j] <- alphabet[mot[j]] | ||
+ | trouve <- vrai | ||
+ | FIN SI | ||
+ | i++ | ||
+ | FIN TANT QUE | ||
+ | FIN POUR | ||
+ | |||
+ | RETOURNER resultat | ||
+ | FIN FONCTION | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
== Exercice 2 == | == Exercice 2 == | ||
== Exercice 3 == | == Exercice 3 == |
Version du 19 avril 2014 à 10:54
Introduction
On cherche à trouver tous les nombres premiers inférieurs à un entier n fixé. L’algorithme du crible d’Ératosthène consiste à barrer, dans la liste de 0 à n, tous les nombres qui ne sont pas premiers. Si l’on cherche tous les nombres premiers inférieurs à 15, l’algorithme procède de la manière suivante :
1. On barre les entiers 0 et 1 qui ne sont pas premiers ;
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
2. Puis on barre tous les multiples stricts de 2, (2 non compris) ;
2 | 3 | 5 | 7 | 9 | 11 | 13 | 15 |
3. Puis on barre tous les multiples stricts de 3 ;
2 | 3 | 5 | 7 | 11 | 13 |
4. Etc...
La méthode choisie ici consistera à mettre « false » pour une case barrée et « true » sinon. On utilise un tableau de booléens que l’on initialise ainsi : 1. On barre les entiers 0 et 1 qui ne sont pas premiers ;
false | false | true | true | true | true | true | true | true | true | true | true | true | true | true | true |
TAB[0]=false et TAB[1]=false car 0 et 1 ne sont pas premier, et on suppose au début que tous les autres nombres de 2 à 20 sont premiers. A la fin de l’algorithme, seuls les éléments d’indice premiers sont à « true », tous les autres sont passés à « false » (ce qui revient à les barrer).
Partie A
Exercice 1
Écrire une fonction init_tab(n) dont le paramètre est un entier n. Cette fonction renvoie une liste T de taille n représentant les booléens « false », « false » puis « true ».
Exemple :
init_tab(15) =
Exercice 1
FONCTION code_mot_chiffre(mot)
VAR
resultat : liste d'entiers
trouve: booléen
i, j : entier
j <- 0
POUR TOUT j DE mot FAIRE
i <- 0
trouve <- faux
TANT QUE !trouve
SI alphabet[i] = mot[j]
resultat[j] <- alphabet[mot[j]]
trouve <- vrai
FIN SI
i++
FIN TANT QUE
FIN POUR
RETOURNER resultat
FIN FONCTION