/****************************************************************************/ /* Factorial de un numero, utiliza la libreria LIP para manejar */ /* enteros de longitud arbitraria. */ /* */ /* Jaime Suarez <mcripto@bigfoot.com> 2003 */ /* en http://elparaiso.mat.uned.es */ /****************************************************************************/ #include <stdio.h> #include "lip.h" main(int argc, char *argv[]) { verylong n=0, fact=0, uno=0, tmp=0; if (argc!=2) { printf("fact <n>, calcula el factorial de un entero positivo.\n"); return 1; } zsread(argv[1],&n); /* n=argv[1] */ zone(&fact); zone(&uno); /* fact=1 uno=1 */ while(zcompare(n,uno)) { zmul(fact,n,&tmp); /* fact= fact*n */ zcopy(tmp,&fact); zsub(n,uno,&tmp); /* n=n-1 */ zcopy(tmp,&n); } zwriteln(fact); return 0; }