Comunidad PHPeros

Otros => Los Retos PHPeros => Mensaje iniciado por: good en 20 de Octubre de 2011, 20:10:03 pm

Título: calcular divisores
Publicado por: good en 20 de Octubre de 2011, 20:10:03 pm
dado un número entero, hacer un programa que calcule sus divisores
Título: Re:calcular divisores
Publicado por: tuadmin en 21 de Octubre de 2011, 05:37:05 am
Código: [Seleccionar]
<?php
function mostrar_divisores($n)
{
for($i =1;$i <= $n;$i++)
{
if($n $i == 0){
echo "$i es divisor de $n\n";
}
}
}
mostrar_divisores(10);
vaya que tarde es :) me gustaria saber si se puede optimizar esto
Título: Re:calcular divisores
Publicado por: good en 21 de Octubre de 2011, 14:18:15 pm
Código: [Seleccionar]
<?php
function mostrar_divisores($n)
{
for($i =1;$i <= $n;$i++)
{
if($n $i == 0){
echo "$i es divisor de $n\n";
}
}
}
mostrar_divisores(10);
vaya que tarde es :) me gustaria saber si se puede optimizar esto

no me vale, le tendrías que hacer un apaño minúsculo xD
Título: Re:calcular divisores
Publicado por: westwest en 21 de Octubre de 2011, 15:16:25 pm
Lo más básico que se me ocurre es:

function divisores($n, $devolver_divisores = false) {
$arr = array();
for($i=1;$i<=floor($n/2);$i++) {
if($n%$i == 0) { $arr[] = $i; }
}
return ($devolver_divisores ? $arr : count($arr));
}
Título: Re:calcular divisores
Publicado por: good en 22 de Octubre de 2011, 18:42:54 pm
Lo más básico que se me ocurre es:

function divisores($n, $devolver_divisores = false) {
$arr = array();
for($i=1;$i<=floor($n/2);$i++) {
if($n%$i == 0) { $arr[] = $i; }
}
return ($devolver_divisores ? $arr : count($arr));
}


tampoco, esto no devuelve todos los divisores
Título: Re:calcular divisores
Publicado por: westwest en 23 de Octubre de 2011, 00:28:22 am
tampoco, esto no devuelve todos los divisores
Oh, dios, en serio?

function divisores($n, $devolver_divisores = false) {
$arr = array();
for($i=1;$i<=floor($n/2);$i++) {
if($n%$i == 0) { $arr[] = $i; }
}
$arr[] = $n;
return ($devolver_divisores ? $arr : count($arr));
}

Así te sirve?
Título: Re:calcular divisores
Publicado por: tuadmin en 23 de Octubre de 2011, 03:34:24 am
<?php
//creo que no se necesita explicar este codigo :)
function mostrar_divisores_2($n,& $contenedor)
{
   $contenedor=array();
   for($i =1;$i <= $n;$i++)
   {
      if($n % $i != 0){continue;}
      $contenedor[] = $i;
   }
}
$numero = 10;
mostrar_divisores_2($numero,$los_divisores_son);
printf("existe '%s' divisores para el numero:%s\n",
   count($los_divisores_son),
   $numero,
   implode(" , ",$los_divisores_son));
Título: Re:calcular divisores
Publicado por: good en 01 de Noviembre de 2011, 18:21:12 pm
Oh, dios, en serio?

function divisores($n, $devolver_divisores = false) {
$arr = array();
for($i=1;$i<=floor($n/2);$i++) {
if($n%$i == 0) { $arr[] = $i; }
}
$arr[] = $n;
return ($devolver_divisores ? $arr : count($arr));
}

Así te sirve?

esto soluciona el 50% de los casos