Vous êtes sur la page 1sur 2

EXERCICES BOUCLES OUVERTES

II. a) Déterminer la plus petite factorielle qui dépasse 1 000 000.


(rappel : factorielle de n est le nombre n ! = n (n-1) (n-2) ... 1 , produit de tous les entiers de n à 1)
b) De manière générale, écrire une fonction Plafond (x) qui détermine le plus grand entier n tel que n !≤ x
c) En déduire la plus grande factorielle calculable par une calculatrice (qui est limitée à 10 100).

a) n=1
f=1 # f représentera n ! pour l'instant, f = 1!
while f <1000000 :
n=n+1
f=f*n # f devient la factorielle du nombre suivant
print ("la plus petite factorielle dépassant 1000000 est celle de", n)

b) def Plafond (x): # il suffit de remplacer 1000000 par x


n=1
f=1
while f < x :
n=n+1
f = f*n
return (n)
c) on tape Plafond (10**100), on obtient 70 (en effet la calculatrice est incapable de calculer 70 !)

III. En l'an 2000, une forêt compte 10 000 arbres. Ensuite chaque année, l'organisme d'entretien abat 5% des arbres les plus endommagés,
puis replante 300 arbres.
Ecrire un programme permettant de déterminer en quelle année le nombre d'arbres sera inférieur à 6500.

a=10000 # a va représenter le nombre d'arbres


n=2000 # n le numéro de l'année
while a >6500 :
n=n+1
a=a – a*0,05 + 300 # on calcule le nouveau nombre d'arbres
print ("le nombre d'arbres sera inférieur à 6500 en l'an", n)

IV. Bob place 10 000€ sur un compte rénuméré à 4%. Au bout de combien d'années son capital aura-t-il triplé ?

a=10000 # a va représenter l'argent


n= 0 # n le numéro de l'année
while a < 30000 :
n=n+1
a=a + 0.04*a
print ("la capital aura triplé en", n)

VII. Programmer un jeu consistant à deviner un nombre (compris entre 1 et 100) généré aléatoirement par
l'ordinateur. Le programme doit également indiquer le nombre de coups joués.

from random import randint


x=randint(1,100) # x sera le nombre à deviner
k=0 # k sera le nombre de coups joués
y=int(input("Choisissez un nombre")) # le joueur doit proposer un nombre
while y!=x : #tant que le joueur n'a pas deviné le nombre x...
if y<x:
print("Vous êtes trop bas)
else :
print ("Vous êtes trop haut")
y=int(input("Recommencez"))
k=k+1 # on augmente de 1 le nombre de coups joués
print("Vous avez trouvé en", k, "coups")
Génération d'une liste

I. Créer une liste A contenant tous les entiers pairs de 0 à 400

A=[] # on commence par une liste vide


for i in range (0,401):
if i%2==0: #si i est pair
A.append(i) # on l'ajoute à la liste
print(A)

II. Ecrire un programme qui :


demande la valeur d'un nombre
renvoit la liste de tous ses diviseurs (créer la liste avec la même technique qu'au a))

L=[]
n=int(input("Donnez un nombre entier"))

for i in range (1,n+1):


if n%i==0: # si i est un diviseur de n
L.append (i) # je l'ajoute à la liste
print(L)

III. a) Ecrire une fonction booléenne Prim (n) qui est vraie si n est premier (voir chap. 5, boucles fermées)
b) Créer la liste de tous les nombres premiers de 2 à 1000

def Prim(n):
for i in range (2,n):
if n%i==0: # si on rencontre un diviseur de n
return False # la fonction retourne aussitôt False
return True # si on n'en a rencontré aucun, elle retourne True

L=[]
for in in range (2,1001):
if Prim(i): # si i est premier
L. Append (i) # je l'ajoute à la liste

Vous aimerez peut-être aussi