cuantas veces es divisible

Iniciado por dailia__, 16 Diciembre 2017, 23:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

dailia__

Hola, tengo que hacer un programa que descomponga un número en sus factores primos pero me piden que use una función que dándole dos números te diga cuantas veces puedes dividir ese número por el otro. o sea. si tengo 63, 63/3=21/3=7. puedo dividir el 63 entre 3 2 veces. Hice esa función y para comprobar si estaba bien la pasé a la main i se queda bloqueado y no entiendo el por qué, si veis el motivo, podríais ayudarme?
Gracias


Código (caddcl) [Seleccionar]
#include <stdio.h>
#include <conio.h>
int main (void){
int i, n, p;
scanf ("%d",&n);
scanf ("%d",&p);
i=0;
while (p<=n){
if (n%p==0){
n=n/p;
i++;
}
}
printf ("%d veces",i);
getch();
return 0;
}

engel lex

tu problema es que haces un while p<=n (cosa que aquí no es muy relevante) y un if tal que si es divisible divide, si no, simplemente queda en un loop infinito

en este caso en el while resumes el if

int cuenta = 0;
a = 63;
b = 3;

while(a%b==0){
  a /= b;
  cuenta++;
}

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

dailia__

Cita de: engel lex en 17 Diciembre 2017, 01:15 AM
tu problema es que haces un while p<=n (cosa que aquí no es muy relevante) y un if tal que si es divisible divide, si no, simplemente queda en un loop infinito

en este caso en el while resumes el if


La verdad es que tiene sentido, pensé que primero tenía que saber si era más pequeño, aunque bueno, si son divisibles entre si supongo que lo son sin más. muchas gracias

engel lex

no es necesario saber si es más pequeño ya que 62 no es multiplo de 2 ni viceversa sin importar quien es más grande, si, es un indicador, pero no muy preciso
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.