Factorielle inverse

Fermé
sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021 - 2 nov. 2021 à 14:11
jordane45 Messages postés 38323 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 - 2 nov. 2021 à 15:17
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

jordane45 Messages postés 38323 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
2 nov. 2021 à 14:13
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
sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021
2 nov. 2021 à 14:29
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
jordane45 Messages postés 38323 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021
2 nov. 2021 à 14:31
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
sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021 > jordane45 Messages postés 38323 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024
2 nov. 2021 à 14:55
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
jordane45 Messages postés 38323 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021
2 nov. 2021 à 15:17
Ah ok.

Donc
n = 10

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