Red de conocimiento informático - Material del sitio web - Factorial de números grandes

Factorial de números grandes

Este código

for(i = 2; i <= n; i++) { /* Multiplicar por i */

int c = 0;

for (j = 0; j < maxn; j++) {

int s = f[j] * i + c;

f[j] = s % 10;

c = s / 10;

}

}

Este es en realidad el código central para encontrar factoriales. Debido al tamaño limitado de las palabras de las computadoras, el rango de números enteros representables es mucho menor que el resultado de 1000 factoriales. Las computadoras personales actuales suelen ser de 32 bits y solo pueden representar números enteros (sin signo) hasta 4294967295. El resultado de 15 factoriales ya es 1307674368000, que está mucho más allá del rango de representación de 32 bits, y mucho menos 1000 factoriales. Por lo tanto, los programas utilizan matrices de números enteros para almacenar "enteros extremadamente largos" para mantener la precisión. El programa usa int f[] para almacenar el resultado factorial. Por ejemplo, el factorial de 15 es 1307674368000, representado por int f[]:

f[0] = 0

f[1] = 0

f[ 2] = 0

f[3] = 8

f[4] = 6

f[5] = 3

f[5] = 4

f[5] = 4

f[5] = 7

f[5] = 6

f[ 5] = 7

f[5] = 0

f[5] = 3

f[5] = 1

Programa,

f[j] = s % 10;

c = s / 10

Esto es para imitar el cálculo manual

Esto imita los cálculos manuales, usando decimal, un dígito a la vez, y si es mayor que 10, pasa al siguiente dígito. Puedes ver esto haciendo cálculos a mano.