Différences entre versions de « Php algo td5 »
Ligne 40 : | Ligne 40 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
− | ''init_tab(15)'' = | + | {| |
+ | |-align="center" | ||
+ | || | ||
+ | ''init_tab(15)'' | ||
+ | || | ||
+ | → | ||
+ | || | ||
+ | {|class="wikitable" width="60%" | ||
+ | |-align="center" | ||
+ | || false || false ||true || true || true || true || true || true || true || true || true || true || true || true || true || true | ||
+ | |} | ||
+ | |} | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px"> | ||
<big>Exercice 1</big> | <big>Exercice 1</big> | ||
<source lang="text" style="border:1px solid black;font-size:130%" class="mw-collapsible-content"> | <source lang="text" style="border:1px solid black;font-size:130%" class="mw-collapsible-content"> | ||
− | FONCTION | + | FONCTION init_tab(n) |
VAR | VAR | ||
− | resultat : liste | + | resultat : liste de booléen |
− | + | i : entier | |
− | i | + | |
− | + | resultat[0] <- faux | |
+ | resultat[1] <- faux | ||
− | POUR | + | POUR i ALLANT DE 2 A n {PAR_PAS_DE 1} |
− | + | resultat[n] <- vrai | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
FIN POUR | FIN POUR | ||
Version du 19 avril 2014 à 11:04
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 init_tab(n)
VAR
resultat : liste de booléen
i : entier
resultat[0] <- faux
resultat[1] <- faux
POUR i ALLANT DE 2 A n {PAR_PAS_DE 1}
resultat[n] <- vrai
FIN POUR
RETOURNER resultat
FIN FONCTION