2012-07-03 16 views
12

Tengo una pregunta, ¿por qué el cálculo numérico de Python es muy rápido? por ejemplo el código de abajo corre menos de un segundo¿Por qué python math.factorial (x) es muy rápido?

import math 
print math.factorial(10000) 

por qué ???

+0

La velocidad de esta función depende en gran medida de la versión de Python. Es mucho más rápido en Python 3, mientras que parece estar usando Python 2.x. –

+2

¿Por qué no sería rápido? – Gabe

+1

Ver [¿Por qué math.factorial es mucho más lento en Python 2.x que 3.x?] (Http://stackoverflow.com/questions/9815252/why-is-math-factorial-much-slower-in-python- 2-x-than-3-x) para una discusión de los diferentes algoritmos factoriales en Python 2.xy 3.x. Cerrando como duplicado. –

Respuesta

17

El math module's functions se implementan en C:

que proporciona acceso a las funciones matemáticas definidas por la norma C.

Al usar un algoritmo eficiente en C, obtienes resultados rápidos.

Si está preguntando por qué esta operación en particular es tan rápida, vea Why is math.factorial much slower in Python 2.x than 3.x? y C code itself.

+1

La velocidad del factorial depende de la complejidad del algoritmo. Una implementación directa en C será mucho más lenta que el algoritmo utilizado en Python 3.x –

+0

@SvenMarnach: ¿Cómo se supone que supongo que el OP comparó python 2 y 3 velocidades? :-P –

+1

El resultado del algoritmo es un número con más de 30000 dígitos, para este gran cálculo de números debe usar una matriz o cadena, pero estoy confundido, ¿por qué devuelve el resultado más corto que un segundo – Pooya

Cuestiones relacionadas