2010-08-05 24 views
1

Lors du calculcalcul factoriel en Python

math.factorial(100) 

Je reçois:

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L

Pourquoi est-il un L à la fin du numéro?

+4

Wow, je suis impressionné que Python puisse le faire! Peut-être besoin de faire un saut et devenir une personne Python. – thomasrutter

+1

Python va à onze-kerjillion. – msw

+1

Je l'ai entendu peut aussi faire des nombres imaginaires comme trente-douze –

Répondre

14

L signifie qu'il est un long par opposition à un int. La raison pour laquelle vous voyez est que vous êtes à la recherche à la repr du long

Vous pouvez utiliser

print math.factorial(100) 

ou

str(math.factorial(100)) 

si vous voulez juste le nombre

3

Le L signifie qu'il est un entier long

+1

Qui est un BigInt en Python, non? –

+2

nopey. Ils sont longs, pas longs mais longs. http://www.python.org/dev/peps/pep-0237/ – msw

0

je crois que vous travaillez avec un BigInt, qui est connu sous le nom long en Python - il se développe et occupe une quantité variable de RAM si nécessaire. Le nom long peut être déroutant, car cela signifie un nombre spécifique d'octets dans une poignée de langues populaires d'aujourd'hui. Ce qui suit peut vous aider à obtenir le nombre d'octets requis pour stocker l'objet.

Python 2.6.2 (r262:71600, Aug 14 2009, 22:02:40) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
>>> import sys 
>>> a = 1 
>>> sys.getsizeof(a) 
12 
>>> import math 
>>> sys.getsizeof(math.factorial(100)) 
84 
>>> sys.getsizeof(math.factorial(200)) 
182 
>>> 
+0

Bien qu'informatif, ce n'est pas lié à la question et j'ai vu les gens se faire descendre (pettily, si je peux me permettre) pour moins. Vous pourriez vouloir supprimer ceci. – msw

+0

@msw, voyons ce qu'il se passe. Ce n'est pas comme si je m'inquiétais autant de mon représentant - c'est juste un nombre. Si elle tombe en panne, je vais lancer une réponse populaire assez rapidement et fera plus que compenser. –

-1

vous pouvez utiliser le code de calcul factoriel ...

def factorial (number): 
    product=1; 
    for i in range(number): 
     product=product*(i+1) 
    return product 

Je n'ai pas Python, donc je n'ai pas testé le code. Je garantis que cette fonction fonctionnera.