我在我的机器上得到以下结果:
Python 3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> timeit.timeit('factorial(10000)', 'from math import factorial', number=100)
1.9785256226699202
>>>
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> timeit.timeit('factorial(10000)', 'from math import factorial', number=100)
9.403801111593792
>>>
Run Code Online (Sandbox Code Playgroud)
我认为这可能与int/long转换有关,但factorial(10000L)在2.7中没有任何更快.
我正在构建一个生成大量整数的加密程序。它看起来像这样:
a = plaintextOrd**bigNumber
Run Code Online (Sandbox Code Playgroud)
当我做
a = str(a)
Run Code Online (Sandbox Code Playgroud)
需要28分钟以上。
有没有办法比使用内置的 str() 函数更快地转换这样的整数?
我需要它是一个字符串的原因是因为这里的这个函数:
def divideStringIntoParts(parts,string):
parts = int(parts)
a = len(string)//parts
new = []
firstTime = True
secondTime = True
for i in range(parts):
if firstTime:
new.append(string[:a])
firstTime = False
elif secondTime:
new.append(string[a:a+a])
secondTime = False
else:
new.append(string[a*i:a*(i+1)])
string2 = ""
for i in new:
for i in i:
string2 += i
if len(string2) - len(string) != 0:
lettersNeeded = len(string) - len(string2)
for i in range(lettersNeeded):
new[-1] += string[len(string2) …Run Code Online (Sandbox Code Playgroud)