Foros del Web » Programando para Internet » PHP »

Factorización

Estas en el tema de Factorización en el foro de PHP en Foros del Web. Buenas, Estoy tratando de hacer una función que reciba un número y me escriba la factorización de este, por ejemplo: Si recibo el número 20 ...
  #1 (permalink)  
Antiguo 08/11/2012, 13:28
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Factorización

Buenas,

Estoy tratando de hacer una función que reciba un número y me escriba la factorización de este, por ejemplo:


Si recibo el número 20 que me escriba:

20 = 2*2*5

Para el 7:

7 = 7


Gracias por la ayuda.

Un cordial saludo,
  #2 (permalink)  
Antiguo 08/11/2012, 16:28
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Factorización

Código PHP:
Ver original
  1. function esPrimo($num){
  2.         $max=sqrt($num);
  3.         if ($num==2) return true;
  4.         if ($num%2==0) return false;
  5.         for ($i=3;$i<=$max;$i+=2)
  6.         {
  7.             if ($num%$i==0) return false;
  8.         }
  9.         return true;
  10.     }
  11.  
  12.     function factorizar($num){
  13.         $arr=array();
  14.         $primo=2;
  15.         while($num>1)
  16.         {
  17.             if (esPrimo($primo) && $num%$primo==0)
  18.             {
  19.                 $arr[]=$primo;
  20.                 $num/=$primo;
  21.             }
  22.             else
  23.             {
  24.                 $primo++;
  25.             }
  26.         }
  27.         return implode('*',$arr);
  28.     }
Toma, los deberes del insti hechos.
  #3 (permalink)  
Antiguo 08/11/2012, 17:06
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Factorización

Cita:
Iniciado por marlanga Ver Mensaje
Código PHP:
Ver original
  1. function esPrimo($num){
  2.         $max=sqrt($num);
  3.         if ($num==2) return true;
  4.         if ($num%2==0) return false;
  5.         for ($i=3;$i<=$max;$i+=2)
  6.         {
  7.             if ($num%$i==0) return false;
  8.         }
  9.         return true;
  10.     }
  11.  
  12.     function factorizar($num){
  13.         $arr=array();
  14.         $primo=2;
  15.         while($num>1)
  16.         {
  17.             if (esPrimo($primo) && $num%$primo==0)
  18.             {
  19.                 $arr[]=$primo;
  20.                 $num/=$primo;
  21.             }
  22.             else
  23.             {
  24.                 $primo++;
  25.             }
  26.         }
  27.         return implode('*',$arr);
  28.     }
Toma, los deberes del insti hechos.
Muchas gracias, funciona perfectamente.
No era para el instituto ya soy un poco mayor para ello

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.