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
#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;
}
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++;
}
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
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