Aller au contenu

Ep 33

le document

l'algorithme

Issue de : 23-NSI-44⚓

EXERCICE 1⚓

Programmer une fonction renverse, prenant en paramĂštre une chaĂźne de caractĂšres non vide mot et renvoie une chaĂźne de caractĂšres en ordre inverse.

Exemple :

🐍 Script Python
>>> renverse("")
""
>>> renverse("abc")
"cba"
>>> renverse("informatique")
"euqitamrofni"
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def renverse(mot):bksl-nl sol = ''bksl-nl for lettre in mot:bksl-nl sol = lettre + solbksl-nl return solbksl-nlbksl-nltry:bksl-nl assert renverse("") == ""bksl-nl assert renverse("abc") == "cba"bksl-nl assert renverse("informatique") == "euqitamrofni"bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

Un nombre premier est un nombre entier naturel qui admet exactement deux diviseurs distincts entiers et positifs : 1 et lui-mĂȘme.

Le crible d’ÉratosthĂšne permet de dĂ©terminer les nombres premiers plus petit qu’un certain nombre n fixĂ©.

On considĂšre pour cela un tableau tab de n boolĂ©ens (type list), initialement tous Ă©gaux Ă  True, sauf tab[0] et tab[1] qui valent False, 0 et 1 n’étant pas des nombres premiers.

On parcourt alors ce tableau de gauche Ă  droite et pour chaque indice i :

  • si tab[i] vaut True : le nombre i est premier et on donne la valeur False Ă  toutes les cases du tableau dont l’indice est un multiple de i, Ă  partir de 2*i (c’est-Ă -dire 2*i, 3*i ...).
  • si tab[i] vaut False : le nombre i n’est pas premier et on n’effectue aucun changement sur le tableau.

On dispose de la fonction crible, donnée ci-dessous et à compléter, prenant en paramÚtre un entier nstrictement positif et renvoyant un tableau contenant tous les nombres premiers plus petits que n.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def crible(n):
    """Renvoie un tableau contenant tous les nombres premiers
    plus petits que n."""
    premiers = []
    tab = [True] * n
    tab[0], tab[1] = False, False
    for i in range(n):
        if tab[i]:
            premiers.... 
            multiple = ... 
            while multiple < n:
                tab[multiple] = ... 
                multiple = ... 
    return premiers
🐍 Script Python
>>> crible(40)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
>> crible(5)
[2, 3]

RĂ©ponse

Complétez le code ci-dessous

###
def crible(n):bksl-nl """bksl-nl Renvoie un tableau contenant tous les nombres premiers plus petits que Nbksl-nl """bksl-nl premiers = []bksl-nl tab = [True] py-str nbksl-nl tab[0], tab[1] = False, Falsebksl-nl for i in range(..., n):bksl-nl if tab[i] == ...:bksl-nl premiers.append(...)bksl-nl for multiple in range(2py-stri, n, ...):bksl-nl tab[multiple] = ...bksl-nl return premiersbksl-nlbksl-nlassert crible(40) == [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]bksl-nlbksl-nl



Solution

###
def crible0(n):bksl-nl """bksl-nl Renvoie un tableau contenant tous les nombres premiers plus petits que Nbksl-nl """bksl-nl premiers = []bksl-nl tab = [True] py-str nbksl-nl tab[0], tab[1] = False, Falsebksl-nl for i in range(2, n):bksl-nl if tab[i] == True:bksl-nl premiers.append(i)bksl-nl for multiple in range(2py-stri, n, i):bksl-nl tab[multiple] = Falsebksl-nl return premiersbksl-nlbksl-nldef crible(n):bksl-nl """Renvoie un tableau contenant tous les nombres premiersbksl-nl plus petits que n."""bksl-nl premiers = []bksl-nl tab = [True] py-str nbksl-nl tab[0], tab[1] = False, Falsebksl-nl for i in range(n):bksl-nl if tab[i]:bksl-nl premiers.append(i) bksl-nl multiple = i py-str2bksl-nl while multiple < n:bksl-nl tab[multiple] = False bksl-nl multiple = multiple + ibksl-nl return premiersbksl-nlbksl-nltry:bksl-nl assert crible(40) == [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]bksl-nl assert crible(5) == [2, 3]bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl