def hello():
    return "Bonjour Toulmonde"

def f(x):
    return 4*x**2 - 5*x+1


#Exercice 1
def IMC(masse,taille):
    return masse/taille**2

#print(IMC(m,t))

#Exercice 2

#programmation récursive (fonction qui s'auto-appelle)
def fact(n):
    if n==0:
        return 1
    else :
        return n*fact(n-1)


#Avec une boucle
def fact2(n):
    F=1
    for i in range(1,n+1):
        F=F*i
    return F

#Affichage
# for i in range(21):
#     print(f"{i}! = {fact(i)}")

#Exercice 3
def binom(n,k):
    return int(fact(n)/(fact(k)*fact(n-k)))

#le coefficient binomial est un nombre entier, donc on peut "forcer" le type du return en "integer" pour éviter l'affichage du .0 à la fin du résultat.

# for i in range(4):
#     print(binom(3,i))
#
# for i in range(11):
#     print(binom(10,i))

#Exercice 4
from math import sqrt
def test(n):
    a=True
    for i in range(2,int(sqrt(n+1))):
        if n%i==0:
            a=False
    return a

#Cette fonction est un test de primalité du nombre mis en argument. On peut arrêter les divisions à la racine carrée de n.
'''
for k in range (2,100):
    if test(k)==True:
        print(k)
'''
#Permet d'afficher les nombres premiers entre 2 et 100.

#Exercice 5 : algorithme de seuil
def seuil(S):
    u=1
    n=0 #compteur
    while u<S:
        u=0.8*u+5
        n=n+1 #incrementation du compteur
    return n

#Exercice 7
def seuil2():
    u=1
    n=0 #compteur
    while u<2:
        u=1.04*u
        n=n+1 #incrementation du compteur
    return n








