2010-08-05 61 views
1

因子,在计算计算在Python

math.factorial(100) 

我得到:

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L

为什么会出现一个L在号码的结束?

+4

哇,我印象深刻,Python可以做到这一点!可能需要跳槽并成为Python人员。 – thomasrutter 2010-08-05 04:28:18

+1

Python达到十一万分之一。 – msw 2010-08-05 04:44:57

+1

我听说它也可以做像虚数三十二 – 2010-08-05 06:37:00

回答

14

L表示它是一个long而不是一个int。你看它的原因是,你正在看的long

repr可以使用

print math.factorial(100) 

str(math.factorial(100)) 

如果你只是想数

3

L意味着它是一个长整数

+1

这是Python中的BigInt,对吗? – 2010-08-05 04:08:15

+2

nopey。他们是多头头寸,不是多头头寸,而是多头头寸。 http://www.python.org/dev/peps/pep-0237/ – msw 2010-08-05 04:29:28

0

我相信你正在使用一个BigInt,它在Python中被称为long - 它扩展并根据需要占用可变数量的RAM。名称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 
>>> 
+0

尽管内容丰富,但这与问题无关,而且我也看到人们为了减少而得到低估(如果我可以发表意见,请小心)。您可能想要删除它。 – msw 2010-08-05 04:32:22

+0

@msw,让我们看看会发生什么。这不像我关心我的代表那么多 - 它只是一个数字。如果它下降了,我会尽快地提出一个流行的答案,并且会超过它。 – 2010-08-05 14:35:51

-1

,你可以用阶乘计算器代码...

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

我没有Python的,所以我没有测试出来的代码。我保证这个功能会起作用。