¿Cómo encontrar el factorial de 10000 usando lenguaje C? ¿Puede algún experto darme algunas ideas?
#include "stdio.h"
#include "string.h"
#includelt;stdlib.hgt;
int main()
{
char n[10];
int a[20000]={0}, b[20000]={0}, c[20000]={0}, temp
int i, j, k, len
printf("Ingrese el número factorial: ");
scanf("s",amp; n);
/*Lo siguiente utiliza b como multiplicador y a como multiplicando (aumentando de 1 a n en secuencia)*/
temp=atoi(n);/*round*/
b[0]=1;/*inicializar b, comenzar factorial desde 1*/
len=1 ;/*Inicializa la longitud de b*/
for(i=1;ilt;=temp;i)/*multiplica el factorial de menor a mayor*/
{
sprintf(n, "d", i); /*Convierte el término factorial en una cadena*/
for(j=strlen(n)-1;jgt;=0 ;j --)/*Almacenamiento inverso de términos factoriales (cadena)*/
a[strlen(n)-1-j]=n[j]-'0'; debe convertirse en un número entero Multiplicar */
for(j=0;jlt;len;j)/*Obtener todos los bits de b*/
for(k=0. ;klt;strlen( n);k)/*Obtener cada dígito del término factorial*/
{
c[j k] =b[j]*a[k] ;/*Usa c Para almacenar el resultado de cada multiplicación de dígitos*/
c[j 1 k] =c[j k]/10 /*Si c[j k] no es menor que 10, el la parte mayor que 10 se enviará al bit alto*/
c[j k]=10;/*Después de ser enviada al bit alto, c[j k] debe realizar la operación restante correspondiente. Conserve solo la parte restante*/ }
if(c[j k-1]!=0)/*Juzgue la longitud de los dígitos del nuevo número b*/
len= j k ;
else
len=j k-1;
for(j=0;jlt;len;j)/*Actualizar b*/
b[j]=c[j];
memset(c, 0, sizeof(c)); /*Restablecer c a cero*/
}
for(i=len-1;igt;=0;i--)/*resultado de salida inversa*/
printf("d",b[i]) ;
printf("\n");
devuelve 0;
}