Factorielle inverse

bonjour !
je pourrai avoir un coup de main sur ce programme merci d'avance
Écrire une fonction depasse qui prend en argument un entier A et qui renvoie le plus petit entier n tel que
n! soit supérieur ou égal à A.
Par exemple, depasse(120) renvoie 5 car 5!=120. De même, depasse(20) renvoie 4 car 3!=6 mais 4!=24.

alors concernant la factorielle
j'ai déjà fait ce programme:
def fact(n):
if+==0:
return 1
else:
return n* fact(n-1)


apres c'est pour faire l'inverse que je bloque
Par exemple si je rentre 120 je dois obtenir 5
je sais que le programme doit etre tel que:
120/1 = 120
120/2 = 60
60/3 = 20
20/4 = 5
5/5 = 1
pour me donner comme resultat:
f(depasse)
= 5
mais je n'arrive pas a le programmer

1 réponse

  1. Modérateur
    L'utilisateur entre un nombre : n = 120
    Tu fais une boucle de x=1 à n (donc 120 )
    Dès que le factoriel de x est supérieur à n alors tu prends le nombre précédent (x-1) de ta boucle...
    1. Du coup j'ai fait ca:
      def f(x):
          while x >=1:
              i=1
              s=1+i
              r= x/s
              return r  

      mais ca ne repète pas le programme.
      pour f(120), ca s'arrete à 60
    2. Modérateur
      @sk_oula...

      Pourquoi un while ?

      Et à quel moment tu fais appel à ta fonction pour calculer le factoriel ?
      A quel moment tu fais une condition pour comparer le résultat du factoriel avec la valeur de n ?
      A quel endroit tu demandes à un utilisateur d'entrer la valeur souhaitée "n" ?
    3. @jordane45mais normalement on ne doit pas utiliser le programme de la factorielle. il est à part
      On doit trouver la factorielle inversée en une fois sans faire appel à une autre fonction
    4. Modérateur
      @sk_Ah ok.

      Donc
      n = 10
      
      r = n/1
      x = 1
      while r>=1:
        x+=1
        r = r/x
        
      print(x-1)