Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/01/2015, 10:35
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Se os ocurre un algoritmo de números primos más eficiente que este ?

En realidad la comprobación se hace en un solo for, pero para buscar en un rango de numeros vas a necesitar otro for o foreach dependiendo el caso.
La optimización no siempre involucra menos código como se piensa. Te voy a dejar otro aproximación que es mas eficiente que la .
Código PHP:
Ver original
  1. $time = microtime(TRUE);
  2.  
  3. function isPrime($number) {
  4.     $i = 2;
  5.  
  6.     if ($number == 2) {
  7.         return true;
  8.     }
  9.  
  10.     while ($i <= sqrt($number)) {
  11.         if ($number % $i == 0) {
  12.             return false;
  13.         }
  14.         $i++;
  15.     }
  16.  
  17.     return true;
  18. }
  19.  
  20. for($i = 0; $i <= 10000; $i++)
  21. {
  22.     if(isPrime($i)){
  23.           echo "{$i} es numero primo <br>";
  24.     }
  25. }
  26.  
  27. //Tiempo estimado de ejecución
  28.  
  29.     'memory' => (memory_get_usage() - $mem) / (1024 * 1024),
  30.  
  31.     'seconds' => microtime(TRUE) - $time
  32.  
  33. ));
Si lo comparas contra tu algoritmo, notaras que para un rango de 10000 números tu aproximación tarda mucho mas
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.