/****************************************************************************/ /* 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; }