Factorielle inverse

sk_ Messages postés 15 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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...
    0
    1. sk_ Messages postés 15 Statut Membre
       
      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
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > sk_ Messages postés 15 Statut Membre
         
        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" ?
        0
      2. sk_ Messages postés 15 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        mais 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
        0
      3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > sk_ Messages postés 15 Statut Membre
         
        Ah ok.

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