acabas de tocar un limite computacional de C, int es un tipo de variable normalmente 32bits, que puede contener valores desde -2.147.483.647 hasta 2.147.483.647... sin embargo el resultado del factorial de 13 es 6.227.020.800, para poder mostrarlo, tendrías que usar en lugar de int, long int que es de 64bits, si quieres duplicar el rango (para que no tome en cuenta los negativos) usarías unsigned long int y toma en cuenta que no llegarás muy lejos porque el valor máximo sería 18.446.744.073.709.551.616, que aunque parezca muy grande es menor que el factorial de 21 (que es 51.090.942.171.709.440.000)... si quieres calcular más allá de eso tendrás que usar métodos especiales (aritmética de precisión arbitraria)
entonces en la linea que declaras x,y, z, debería ser
entonces en la linea que declaras x,y, z, debería ser
Código (c) [Seleccionar]
unsigned long int x,y=0,z=1;