Exercice 1. Écrire une fonction « diviseur : int -> int -> bool » testant si un premier entier en divise un second. |
Exercice 2. Écrire une fonction « ndays : int -> int » donnant le nombre de jours d’un mois de l’année (année non bissextile), en fonction de la position du moins dans l’année. |
Exercice 3. Écrire une fonction « ndigits : int -> int » donnant le nombre de chiffres d’un entier. |
Exercice 4. Écrire une fonction « fact : int -> int » calculant la factorielle d’un entier. |
Exercice 5. Écrire une fonction « cnp : int -> int -> int » donnant le coefficient binomial {\dbinom{n}{p}}. On s’attachera à donner plusieurs versions différentes. |
Exercice 6. La suite de Fibonacci est définie par {F_{0}=0}, {F_{1}=1} et {F_{n}=F_{n-1}+F_{n-2}} pour {n\ge2}. Écrire une fonction « fibo : int -> int » calculant le {n}-ième terme de la suite de Fibonacci. |
Exercice 7. Écrire simultanément deux fonctions récursives « pair : int -> bool » et « impair : int -> bool » s’appelant mutuellement, et qui disent si un entier donné est pair (impair) ou non. |
Exercice 8. La suite dite de Syracuse » est définie par {u_{0}=a\in \mathbb{N}^{*}} et {u_{n+1}=\begin{cases}u_{n}/2\text{\ si\ }u_n\text{\ est pair}\cr 3u_{n}+1\text{\ si\ }u_n\text{\ est impair}\end{cases}}Une célèbre conjecture, non démontrée à ce jour, affirme que : {\forall\, a\in\mathbb{N}^{*},\;\exists\,n_{0}\in\mathbb{N},\;u_{n_{0}}=1}. Écrire une fonction « syrac : int -> unit » affichant la suite des valeurs de {u_{0}=a} à {u_{n_{0}}=1}, séparées par des espaces, avec un saut de ligne final. |
Exercice 9. On multiplie deux entiers {a} et {b} de la manière suivante, dite « du paysan russe » : on divise {a} par {2} tant que c’est possible, en doublant {b}, sinon on décrémente {a} et on ajoute {b} au résultat. |
Exercice 10. Écrire une fonction « prime : int -> bool » testant si un entier strictement positif est premier. |
Exercice 11. Écrire une fonction « factor : int -> unit » affichant les facteurs premiers d’un entier {n} (chacun d’entre eux étant éventuellement répété autant que nécessaire). |
Exercice 12. Écrire une fonction « randseg : int -> int -> int » renvoyant un entier aléatoire dans un segment {[a,b]}. |