расчет факториала в Python - PullRequest
       32

расчет факториала в Python

1 голос
/ 05 августа 2010

При расчете

math.factorial(100)

Я получаю:

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L

Почему в конце числа стоит L?

Ответы [ 4 ]

14 голосов
/ 05 августа 2010

L означает, что это long, а не int. Причина, по которой вы видите это, заключается в том, что вы смотрите на repr из long

Вы можете использовать

print math.factorial(100)

или

str(math.factorial(100))

если вы просто хотите номер

3 голосов
/ 05 августа 2010

L означает, что это длинное целое число

0 голосов
/ 03 августа 2012

Вы можете использовать код факториального калькулятора ...

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

У меня нет Python, поэтому я не тестировал код. Я гарантирую, что эта функция будет работать.

0 голосов
/ 05 августа 2010

Я считаю, что вы работаете с BigInt, который известен как long в Python - он расширяется и занимает необходимое количество оперативной памяти по мере необходимости.Название long может ввести в заблуждение, поскольку оно означает определенное количество байтов в нескольких популярных современных языках.Следующее может помочь вам получить количество байтов, необходимое для хранения объекта.

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
>>> 
...