$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

Exercices sur les ensembles de nombres - Algorithmique

Avec des variables
Exercice 1 - Distributeur de billets [Signaler une erreur] [Ajouter à ma feuille d'exos]
Enoncé
Un distributeur de billets délivre des billets de 50, 20 et 10 euros. Pour une somme donnée, il délivre toujours le moins de billets possibles.
  1. Quels billets va-t-il délivrer pour une demande de 280 euros? de 340?
  2. Compléter l'algorithme suivante afin de la fonction $distributeur(n)$ renvoie le nombre de billets de 50, de billets de 20 et de billets de 10 euros donnés par le distributeur lorsqu'on lui demande une somme de $n$ euros.


    def distributeur(n):
        c=n//50
        n=n%50
        v=...
        n=...
        d=...
        return (c,v,d)

Corrigé
Exercice 2 - Conversion de secondes en heures minutes secondes [Signaler une erreur] [Ajouter à ma feuille d'exos]
Enoncé
  1. Combien y-a-t-il de secondes dans une heure?
  2. Soit $n$ un entier naturel. Quelle instruction Python permet de donner le nombre d'heures (entières) dans $n$ secondes? Quelle instruction Python permet alors de déterminer le nombre de secondes restantes.
  3. Compléter la fonction suivante sous Python afin qu'elle renvoie le nombre d'heures, minutes, secondes qu'il y a dans $n$ secondes.


    def heuminsec(n):
        h=...
        n=n%3600
        m=...
        s=...
        return h,m,s

Indication
Corrigé
Avec des booléens et des tests
Enoncé
  1. Comment peut-on tester si $a$ divise $b$ en calculant le reste dans la division euclidienne de $a$ par $b$?
  2. Compléter la fonction Python suivante pour qu'elle renvoie le booléen True si $a$ divise $b$, et le booléen False sinon.


    def divise(a,b):
        return ...

Corrigé
Enoncé
Les années bissextiles sont celles dont le numéro est divisible par $4$ mais n'est pas divisible par $100$, et celles dont le numéro est divisible par $400$.
  1. $2024$ est-elle une année bissextile? $2025$? $2100$? $2400$?
  2. Compléter l'algorithme ci-dessous avec les booléens $annee\%4 == 0$, $annee\%100!=0$, $annee\%400==0$, et avec les connecteurs logiques $\textrm{or}$ et $\textrm{and}$ pour que la fonction $bissextile(annee)$ renvoie $True$ si $annee$ est le numéro d'une année bissextile, et $False$ sinon.


    def bissextile(annee):
       return ....

Corrigé
Avec une boucle
Enoncé
On souhaite écrire une fonction Python pour déterminer si un nombre entier naturel $n\geq 2$ est premier ou non.
  1. Dans la console, tester les instructions $6\%3$, $7\%3$, $8\%3$.
  2. Que renvoie l'instruction $a\%b$?
  3. Que test l'instruction $a\%b==0$?
  4. Compléter la fonction suivante pour qu'elle renvoie $\textrm{True}$ si le nombre $n\geq 2$ est premier, et $\textrm{False}$ sinon.


    def premier(n):
        resultat=True;
        for i in ....:
            if ...:
                resultat=False
        return resultat

Corrigé
Enoncé
On souhaite écrire sous Python une fonction déterminant le nombre de diviseurs positifs d'un entier naturel $n$. On donne la fonction suivante :


def nbdiviseurs(n):
    S=0
    for i in range(1,n+1):
        if ... :
            S=...
    return S

  1. Quelles sont les valeurs prises par $i$?
  2. Compléter la fonction en remplaçant les ... pour que la fonction retourne le nombre de diviseurs de $n$.
Corrigé
Avec une liste
Exercice 7 - Algorithme de décomposition en produit de facteurs premiers [Signaler une erreur] [Ajouter à ma feuille d'exos]
Enoncé
On donne la fonction suivante, qui calcule la décomposition en produit de facteurs premiers d'un entier $n$.


def decompopremiers(n):
    L=[]
    while (n>1):
        i=2
        while (n%i!=0):
            i=i+1
        L.append(i)
        n=n//i
    return L

  1. Faire fonctionner l'algorithme pour $n=12$. Comment varient les variables $i$ et $n$? Que retourne la fonction?
  2. A quoi sert la variable $i$? Pourquoi est-elle initialisée à $i=2$?
  3. A quoi sert la ligne $n=n//i$?
Corrigé
Pour compléter...