Vous êtes sur la page 1sur 3

Algorithmes et Programmes: feuille 01

ESIS - Salama G1 Semestre 1 2015-2016

Travaux dirigés

Exercice 1. Division euclidienne


Soient a un entier positif et b un entier strictement positif. Effectuer la division euclidienne
(division entiere) de a par b, c’est déterminer l’unique couple d’entiers (q, r) tels que a = bq + r
et 0 ≤ r < b.
1. Écrire un algorithme de division euclidienne par soustractions successives. Faire tourner
l’algorithme pour a = 13 et b = 3 ; pour a = 2 et b = 7.
2. Déterminer, en fonction de a et b, le nombre d’opérations élémentaires effectuées (com-
paraisons, additions, soustractions).
3. Écrire deux fonctions reste(a,b) et quotient(a,b) qui retournent respectivement le
reste et le quotient de la division entière de a par b.

Exercice 2. On rappelle que, dans une base b :


- le reste de la division de n par b est égal à la valeur du dernier chiffre de n (celui situé le plus
à droite)
- le quotient de la division entière de n par b est égal à la valeur représentée par le nombre n
privé de son dernier chiffre.
Écrire une fonction sommeChiffres qui retourne la somme des chiffres décimaux d’un nombre
entier n passé en paramètre.

Exercice 3. On rappelle que la somme des n premiers nombres impairs est égale au carré
de n. En déduire un algorithme pour calculer la racine carrée entière par défaut d’un nombre
entier positif donné ; calculer le nombre d’additions et de comparaisons à effectuer.
Travaux pratiques

Créer à votre racine le répertoire algoprog.


Se placer ensuite dans le répertoire algoprog pour y travailer.

Exercice 1. Tester les fonctions reste et quotient écrites en TD.

Exercice 2.
1. Tester la fonction sommeChiffres vue en TD.
2. Écrire une fonction sommeChiffresRangPair qui retourne la somme des chiffres de rang
pair d’un nombre entier n passé en parametre (le chiffre le plus à droite est considéré
comme étant de rang 0). Exemple : si n vaut 5741, la fonction retournera 8.
3. Écrire une fonction qui retourne la somme des chiffres de rang impair d’un nombre n
passé en parametre. Cette fonction appelera la fonction sommeChiffresRangPair. Tester
ces deux dernieres fonctions en exécutant la fonction fournie ci-dessous à mettre dans le
fichier tp01.py.
# Dans l’environnement Python3
# La ligne suivantee est indispensable pour avoir acces a la
# fonction sqrt de Python 3

from math import sqrt

# fonctions fournies :

# pour verifier les sommes de chiffres de rang pair et impair:


def testeSommeChiffres (n):
return sommeChiffres(n) == sommeChiffresRangPair(n)+sommeChiffresRangImpair(
n)

# pour comparer les resultats de la fonction sqrt de la bibliothe python


# avec deux approximations du calcul de la racine carrapproch

def testeRacineCarree ():


for n in range (1,26):
print("sqrt(%2d)= %f" %(n, sqrt(n)), end=" ")
print("racineApprochee(%2d,3)= %f" %(n, racineApprochee(n,3)), end=" " )
print("racineApprochee(%2d,6)= %f" %(n, racineApprochee(n,6)))

# vos fonctions :
4. Un nombre entier n est divisible par 11 si la somme de ses chiffres de rang impair est
congrue modulo 11 à la somme de ses chiffres de rang pair.
Utiliser cette propriété pour écrire une fonction booléenne multipleDeOnze(n) qui, sans
utiliser l’opérateur % ni la fonction reste, retourne True si n est un multiple de 11 et False
sinon. Exemple : si n vaut 387958948949, la fonction retournera True car la différence
entre la somme des chiffres de rang pair (qui vaut 47) et la somme des chiffres de rang
impair (qui vaut 36) vaut 11.

2
Exercice 3.
1. Écrire une fonction racineEntiere implémentant l’algorithme demandé dans l’exercice 3
du TD.
2. Utiliser cette fonction pour écrire une fonction racineApprochee(x,d) affichant la racine

approchée par défaut à 10−d près de x.
Par exemple, racineApprochee(2,1) affichera 1,4 et racineApprochee(2,3) affichera
1,414.
Exécuter la fonction testeRacineCarree fournie dans le fichier tp01.py.

Vous aimerez peut-être aussi