/****************************************************************************/
/* Determina la máxima potencia de 2 y de 5 que divide a un entero.         */
/*                                                                          */
/* Jaime Suarez <mcripto@bigfoot.com> 2003                                  */
/* en http://elparaiso.mat.uned.es                                            */
/****************************************************************************/

#include <limits.h>
#include <math.h>
#include <stdio.h>

main()
{
	unsigned long n,nn,div,potdiez;
	int i;

	printf("n= "); scanf("%lu",&n);
	div=1;
	potdiez=1;
	printf("Divisibilidad por 2:\n");
	for (i=0; i<log(ULONG_MAX)/log(2); i++) {
		div*=2;
		potdiez*=10;
		nn=n%potdiez;
		if (nn/div == (float)nn/div)
			printf("2^%d | %lu ya que %lu | %lu\n",i+1,n,div,nn);
		else {
			printf("2^%d no divide a %lu\n\n",i+1,n);
			break;
		}
	}

	div=1;
	potdiez=1;
	printf("Divisibilidad por 5:\n");
	for (i=0; i<log(ULONG_MAX)/log(5); i++) {
		div*=5;
		potdiez*=10;
		nn=n%potdiez;
		if (nn/div == (float)nn/div)
			printf("5^%d | %lu ya que %lu | %lu\n",i+1,n,div,nn);
		else {
			printf("5^%d no divide a %lu\n",i+1,n);
			break;
		}
	}
	return 0;
}