void factorial(int n);
long arr1[TAM];
arr1=factorial(i);
Lee esas lineas con atencion, declaras una funcion cuyo valor de retorno es void (nada) y tratas de asignarle el mismo a un elemento de un array de long, evidentemente no eso no funciona. Arregla la funcion factorial.