Non ho controllato il codice..
Ma ho visto che nella funzione fattoriale hai messo due if che sono inutili visto che ritorna comunque 1, inoltre conviene far partire i da 2 al posto che da 1.
Puoi anche risparmiarti una variabile andando a decremento:
codice:
int fattoriale(int numero){

	int f = 1;

	while (numero > 1)
		f *= numero--;
	
	return f;
}
Ciao