Recherche d’un sous-mot Stéphane Gonnord Recherche d’un sous-mot et un peu de crible Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Stéphane Gonnord Avec slicing Sans slicing Crible d’Ératosthène [email protected] www.mp933.fr Lycée du parc - Lyon Vendredi 29 novembre 2013 Lycée du parc Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Plan Stéphane Gonnord 1. Retour sur la dichotomie 2. Recherche d’un sous-mot I I I Problème ; principe. Mise en œuvre. Complexité. Améliorations. 3. Le crible d’Érathosthène I I I Le problème ; une solution naïve. Principe du crible. Mise en place. Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Retour sur la dichotomie I Pour chercher une valeur dans un tableau trié : ln n requètes. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Retour sur la dichotomie I I Stéphane Gonnord Pour chercher une valeur dans un tableau trié : ln n requètes. Pour approcher une solution de f (x ) = 0 avec f continue : dans quelques semaines ! Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing a0 b0 a1 b1 a2 Recherche de tous les nombres premiers b2 a3 a4 b3 b4 Le crible y = x2 −2 a5 b5 1.25 1 1.375 1.40625 I 1.5 p 2 Sans slicing Crible d’Ératosthène 2 1.4375 Approximation de x0 à ε près en temps O (ln ε). Le(s) problème(s) I Rechercher tag dans pouettagada... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le(s) problème(s) I Rechercher tag dans pouettagada... I Ou truc dans pouettagada... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le(s) problème(s) I Rechercher tag dans pouettagada... I Ou truc dans pouettagada... I Ou encore tag dans pouettagadatagaplof... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le(s) problème(s) I Rechercher tag dans pouettagada... I Ou truc dans pouettagada... I Ou encore tag dans pouettagadatagaplof... I Voire [1,3,2] dans [12,15,1,3,2,10,1,3,2,42]. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le(s) problème(s) I Rechercher tag dans pouettagada... I Ou truc dans pouettagada... I Ou encore tag dans pouettagadatagaplof... I Voire [1,3,2] dans [12,15,1,3,2,10,1,3,2,42]. I Mais quelle misère ! >>> ’tag’ in ’pouettagada’ True >>> ’truc’ in ’pouettagada’ False Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Le(s) problème(s) Stéphane Gonnord I Rechercher tag dans pouettagada... I Ou truc dans pouettagada... I Ou encore tag dans pouettagadatagaplof... I Voire [1,3,2] dans [12,15,1,3,2,10,1,3,2,42]. I Mais quelle misère ! Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène >>> ’tag’ in ’pouettagada’ True >>> ’truc’ in ’pouettagada’ False I Plan Par contre : >>> [1,3,2] in [12,15,1,3,2,10,1,3,2,42] False OUF ! Recherche de tous les nombres premiers Le crible Slicing autorisé I Rappel : >>> liste = [10,15,30,40] >>> liste[1:3] [15, 30] Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Slicing autorisé I Rappel : >>> liste = [10,15,30,40] >>> liste[1:3] [15, 30] Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing >>> chaine = "tagadaplof" >>> chaine[2:5] ’gad’ Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Slicing autorisé I Rappel : >>> liste = [10,15,30,40] >>> liste[1:3] [15, 30] Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing >>> chaine = "tagadaplof" >>> chaine[2:5] ’gad’ I Et donc : Entrées : m1 , m2 lg1 , lg2 ← |m1 | , |m2 | # les longueurs pour d allant de 0 à lg2 − lg1 faire si m2 [d : d + lg1 ] = m1 alors Résultat : True Résultat : False Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Slicing autorisé I Rappel : >>> liste = [10,15,30,40] >>> liste[1:3] [15, 30] Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing >>> chaine = "tagadaplof" >>> chaine[2:5] ’gad’ I I Et donc : Entrées : m1 , m2 lg1 , lg2 ← |m1 | , |m2 | # les longueurs pour d allant de 0 à lg2 − lg1 faire si m2 [d : d + lg1 ] = m1 alors Résultat : True Résultat : False Complexité : au pire |m2 |... Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Slicing autorisé I Rappel : >>> liste = [10,15,30,40] >>> liste[1:3] [15, 30] Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing >>> chaine = "tagadaplof" >>> chaine[2:5] ’gad’ I I Et donc : Entrées : m1 , m2 lg1 , lg2 ← |m1 | , |m2 | # les longueurs pour d allant de 0 à lg2 − lg1 faire si m2 [d : d + lg1 ] = m1 alors Résultat : True Résultat : False Complexité : au pire |m2 |... ou plutôt |m1 | × |m2 |. Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Sans slicing I Le problème : m2[p:p+lg1] == m1 ? Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Sans slicing I Le problème : m2[p:p+lg1] == m1 ? I Vérifier chaque lettre... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Sans slicing I Le problème : m2[p:p+lg1] == m1 ? I Vérifier chaque lettre... Et quitter dès qu’il y a un échec ! (comparer à l’algorithme « englobant ») Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Sans slicing I Le problème : m2[p:p+lg1] == m1 ? I Vérifier chaque lettre... Et quitter dès qu’il y a un échec ! (comparer à l’algorithme « englobant ») Entrées : m1 , m2 , p si p + |m1 | > |m2 | alors Résultat : False pour i allant de 0 à |m1 | − 1 faire si m2 [p + i ] 6= m1 [i ] alors Résultat : False Résultat : True Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Sans slicing I Le problème : m2[p:p+lg1] == m1 ? I Vérifier chaque lettre... Et quitter dès qu’il y a un échec ! (comparer à l’algorithme « englobant ») Entrées : m1 , m2 , p si p + |m1 | > |m2 | alors Résultat : False pour i allant de 0 à |m1 | − 1 faire si m2 [p + i ] 6= m1 [i ] alors Résultat : False Résultat : True I Complexité : |m1 | dans le pire des cas. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le problème... et une solution I On veut compter/déterminer les nombres premiers majorés par N. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le problème... et une solution I I On veut compter/déterminer les nombres premiers majorés par N. Solution naïve : N √ N divisions euclidiennes. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le problème... et une solution I On veut compter/déterminer les nombres premiers majorés par N. √ I Solution naïve : N N divisions euclidiennes. I Avec le crible : N ln ln N... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le problème... et une solution I On veut compter/déterminer les nombres premiers majorés par N. √ I Solution naïve : N N divisions euclidiennes. I Avec le crible : N ln ln N... mais de l’ordre de N en espace... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le problème... et une solution I On veut compter/déterminer les nombres premiers majorés par N. √ I Solution naïve : N N divisions euclidiennes. I de l’ordre de N en Avec le crible : N ln ln N... mais √ espace... Qu’on peut réduire à N. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Le problème... et une solution I Stéphane Gonnord On veut compter/déterminer les nombres premiers majorés par N. Plan Retour sur la dichotomie √ I Solution naïve : N N divisions euclidiennes. I de l’ordre de N en Avec le crible : N ln ln N... mais √ espace... Qu’on peut réduire à N. Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers N √ N N N ln(ln(N )) ' 2 10 103 1, 5 × 102 4 10 106 2, 2 × 104 6 10 109 2, 6 × 106 8 Le crible 10 1012 2, 9 × 108 La solution naïve I Test de primalité : Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible La solution naïve I Test de primalité : def est_premier(n): if n <= 1: return False if n <= 3: return True for k in range(2, 1+int(sqrt(n))): if n%k == 0: return False return True Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible La solution naïve I Test de primalité : def est_premier(n): if n <= 1: return False if n <= 3: return True for k in range(2, 1+int(sqrt(n))): if n%k == 0: return False return True I Comptons : cpt = 0 for n in range(1001): if est_premier(n): cpt += 1 Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible La solution naïve I Test de primalité : def est_premier(n): if n <= 1: return False if n <= 3: return True for k in range(2, 1+int(sqrt(n))): if n%k == 0: return False return True I Comptons : cpt = 0 for n in range(1001): if est_premier(n): cpt += 1 I Complexité : Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot La solution naïve I Stéphane Gonnord Test de primalité : Plan def est_premier(n): if n <= 1: return False if n <= 3: return True for k in range(2, 1+int(sqrt(n))): if n%k == 0: return False return True I Comptons : cpt = 0 for n in range(1001): if est_premier(n): cpt += 1 √ I Complexité : au plus N N divisions euclidiennes. Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 + 18 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 + 18 + 13 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 + 18 + 13 = 112 Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 Plan 10 11 12 13 14 15 16 17 18 19 Retour sur la dichotomie 20 21 22 23 24 25 26 27 28 29 Recherche d’un sous-mot 30 31 32 33 34 35 36 37 38 39 Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 Crible d’Ératosthène Recherche de tous les nombres premiers 60 61 62 63 64 65 66 67 68 69 Le crible 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 + 18 + 13 = 112 pk : plus grand premier majoré par n 2 n n n 3 5 pk + + +···+ √ n Recherche d’un sous-mot Principe et complexité 0 1 2 3 4 5 Stéphane Gonnord 6 7 8 9 Plan 10 11 12 13 14 15 16 17 18 19 Retour sur la dichotomie 20 21 22 23 24 25 26 27 28 29 Recherche d’un sous-mot 30 31 32 33 34 35 36 37 38 39 Le problème 40 41 42 43 44 45 46 47 48 49 Avec slicing Sans slicing 50 51 52 53 54 55 56 57 58 59 Crible d’Ératosthène Recherche de tous les nombres premiers 60 61 62 63 64 65 66 67 68 69 Le crible 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 49 + 32 + 18 + 13 = 112 pk : plus grand premier majoré par n 2 n n n 3 5 pk + + +···+ ≤n 1 2 √ n 1 1 1 3 4 n + + +···+ ∼ n ln n. Algorithme du crible I Principe : I Rayer les multiples (stricts) de 2 ; Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Algorithme du crible I Principe : I I Rayer les multiples (stricts) de 2 ; puis les multiples de 3 ; Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Algorithme du crible I Principe : I I I I Rayer les multiples (stricts) de 2 ; puis les multiples de 3 ; puis les multiples de 5 ; ... Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Algorithme du crible I Principe : I I I I I Rayer les multiples (stricts) de 2 ; puis les multiples de 3 ; puis les multiples de 5 ; ... on s’arrête quand le carré du crible dépasse N. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Algorithme du crible I Principe : I I I I I Rayer les multiples (stricts) de 2 ; puis les multiples de 3 ; puis les multiples de 5 ; ... on s’arrête quand le carré du crible dépasse N. Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène I Plus formellement : Entrées : N T ← [False,False] + √[True] ∗ (N − 1) pour k allant de 2 à b N c faire si T[k] alors # k est premier : on va « rayer » ses multiples pour i allant de k à bN /k c faire T [k ∗ i ] ←False Résultat : T Recherche de tous les nombres premiers Le crible Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Ben oui ! Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Ben oui ! I Et ça marche ? Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Ben oui ! I Et ça marche ? Ben oui ! Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Ben oui ! I Et ça marche ? Ben oui ! Chiche ? Le code I Par exemple : def crible(n): t = [False, False]+([True] * (n-1)) for k in range(2, 1+int(sqrt(n))): for i in range(k, 1+(n//k)): t[k*i] = False return t Recherche d’un sous-mot Stéphane Gonnord Plan Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible I C’est tout ? Ben oui ! I Et ça marche ? Ben oui ! Chiche ? Chiche ! >>> crible(20) [False, False, True, True, False, True, False, True, False, False, False, True, False, True, False, False, False, True, False, True, False] Recherche d’un sous-mot C’est fini Stéphane Gonnord Plan Merci de votre attention ! Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible Recherche d’un sous-mot C’est fini Stéphane Gonnord Plan Merci de votre attention ! Retour sur la dichotomie Recherche d’un sous-mot Le problème Avec slicing Sans slicing Crible d’Ératosthène Recherche de tous les nombres premiers Le crible