Simplification d'une factorielle
Résolu/FerméUtilisateur anonyme - 8 févr. 2023 à 06:46
- Simplification d'une factorielle
- Factorielle sur ti 83 ✓ - Forum calculatrices
- Factorielle sur casio graph 35+e - Forum calculatrices
- Calculatrice TI 82 stats : factorielles - Forum calculatrices
- Factorielles - Forum calculatrices
- Factorielle - Forum C
9 réponses
6 févr. 2023 à 23:17
Bonsoir
d'abord ce type de représentation n'est pas liée aux factorielles, mais aux grands nombres (ou au petits nombres).
Les 3 cas les plus courants sont
- les masses :il y a le gramme et le kilo gramme (oui c'est le même k pour dire 1000 grammes)
- les distances: il y a le mètre et le kilomètre
- le volume des données informatiques (le Giga octect...)
Si on prend une distance vraiment grande, l'unité astronomique (moyenne terre - soleil) vaut égale à 149 597 870 700 mètres, soit 149 597 871 km, ou 149 598 Mm, ou encore 150 Gm.
A chaque fois, on divise par 1000, on arrondi avec un nombre de décimales qui semble approprié au contexte (149, 597 870 700 Gm n'aurait pas vraiment de sens) et on ajoute la lettre signifiant le facteur d'échelle.
Jusque là, ce sont des représentations normées, le suivant devrait être P pour Péta.
Mais ton prof a décidé de te faire travailler autre chose, et à proposé sa propre représentation, le facteur d'échelle suivant est aa, puis ab, puis ac, etc....
Il a juste changé de convention.
Est-ce que tu comprends avec les suffixes à une lettre seulement? As-tu testé ce code?
La variable cpt représente la position dans le tableau lst (une liste).
Pour continuer, tu n'as qu'à remettre cpt à 0, et tu continues à diviser le nombre par 1000.
Au lieu de prendre le suffixe dans lst, tu le prends dans la nouvelle liste.
Pour 100!, tu n'auras pas besoin de toute la liste.
10**157 ~= 1000**53
7 févr. 2023 à 09:11
Bonjour Pierrot
ta façon de générer la liste de bilettres peut s'apparenter à de la magie pour qui ne maîtrise pas encore python.
Certes, c'est net, propre et sans bavure, ça exploite toute la capacité de python, mais ça ne répond pas, je pense, au but recherché par le prof de 45k.
A mon avis, ce prof cherche à développer le sens de l'algorithmique.
A mon avis, il s'attend plus à une solution à base de boucle(s).
45k, je te propose une piste de réflexion.
Quel sera le bilettre pour cpt = 10?
Décris moi la démarche qui t'as permis de répondre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEst-ce que ta question est de savoir comment générer une liste bi-lettres?Voici comment:
from string import ascii_uppercase as upper
# ...
big = [a+b for a in upper for b in upper]
Tu auras 676 symboles de plus.
De quoi aller jusqu'à 1000**688
Petit test:
>>> f = lambda n: 1 if n <= 1 else n * f(n-1)
>>> from math import *
>>> log10(f(100))
157.97000365471578
6 févr. 2023 à 22:20
Du coup, générer une liste bi-lettre permet de transformer le factorielle d'un nombre comment celui-ci 8 841 761 993 739 701 954 543 616 000 000 en un ça " 8af " parce que je ne pense pas avoir compris le principe d'une liste bi-lettre.
Pouvez-vous m'expliquer s'il vous plaît ?
7 févr. 2023 à 20:58
Je pense avoir compris le résultat s'est "af"
Mon raisonnement :
Je sais que ma première lettre sera un "a" parce qu'on n'a pas parcouru tout l'alphabet.
Puis, ma deuxième lettre sera le nombre d'éléments de ma liste - cpt du coup, j'obtiens 6 et la 6e lettre de l'alphabet est "f"
7 févr. 2023 à 23:58
MERCI ! j'ai trouvé le code
D'après ta réponse précédente, je ne suis pas convaincu que tu as compris.
Quel suffixe te donne 100! qui est de l'ordre de 10**157 comme je l'ai mentionné?
10**157 = 10**156 * 10
10**156 = 1000**52
Si je soustrait 10**12 pour les Tera (ou 1000**4), ça me donne 1000**48, donc la 48ième séquence.
(j'ai dit "soustrait", je parle des exposants)