Foro de programacion

programacion
RegistrateNewsletter
zonas:adsl:area-flash:area-php:area-asp:area-vb:area-photoshop:area-Vfox:area-Soft:area.:Mas
+ de 45.000 registrados
Secciones: Manuales-Diseño-Trucos-Recursos-Foros/Comunidad-Software-CodigoFuente-compras
AñadenosFavoritos
Secciones: Herramientas-Libros-Webmasters/Google-Noticias -Biblioteca-Cursos--Directorio-EmpleoN
Foros de Programacion - Cominidad de Programadores
 
Foros de programacion
es una web de ayuda a los programadores y webmasters, la buena utilizacion del foro sera el premio que tendremos para q este elemento sea util para los usuarios.

Colaborar: Si deseais ser moderadores de alguno de los foros estaremos encantados en que nos presteis esa ayuda , tan solo es necesario tener algun conocimiento
del tema que trata el foro y tener ganas ganas de colaborar para ser moderador mandar un mail indicando de que foro deseais ser moderador

Deseais que pongamos algun nuevo foro de programacion? ¿quieres crear un nuevo foro y ser su moderador? ponte en contacto con nosotros

Retroceder   Foros > Programacion > php

Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 26 de octubre,2009, 02:11
Junior Member
Nivel basico por msg
 
Fecha de Ingreso: oct 2009
Mensajes: 1
Exclamation codigo fuente

necesito que alguien me ayude con el codigo fuente de un programa en php que sume los primeros 20 numeros primos
Responder Citando
  #2 (permalink)  
Antiguo 26 de octubre,2009, 22:55
Junior Member
Nivel Medio por Msg
 
Fecha de Ingreso: oct 2009
Ubicación: Valencia y Castellón
Mensajes: 15
Predeterminado

Es facil. Primero creas una función que calcule si es primo o no.
Despues haces un bucle que empieze en 2 (el 1 no se consider primo) y vaya pasando números.
Si es primo pues lo suma al total.
Y cuando llege a 20, pues paras:

function esprimo($numero)
{
for($i = 2; $i < $numero; $i++)
{
if ($numero % $i == 0){return false;}
}
return true;
}

$numero=2;
$total=0;
$cuantos=0;
while($cuantos<20)
{
if(esprimo($numero))
{
$total+=$numero;
$cuantos++;
}
$numero++;
}
echo $total;
__________________
programador php
Responder Citando
  #3 (permalink)  
Antiguo 27 de octubre,2009, 11:30
Member
Nivel Experto por Msg
 
Fecha de Ingreso: jun 2007
Ubicación: España
Mensajes: 30
Predeterminado

Para hacer la ejecucion mas rapida podria cambiarse:

for($i = 2; $i < $numero; $i++)

por:

for($i = 2; $i < ($numero/2); $i++)

Con una pequeña demostracion matematica puede llegarse facilmente a la conclusion de que si tras haber comprobado la mitad de los posibles divisores no se ha encontrado ninguno, en la mitad restante tampoco se van a encontrar divisores.
Responder Citando
  #4 (permalink)  
Antiguo 29 de octubre,2009, 23:05
Junior Member
Nivel Medio por Msg
 
Fecha de Ingreso: oct 2009
Ubicación: Valencia y Castellón
Mensajes: 15
Predeterminado

Sí, pero se supone que es para un ejercicio de clase, y a lo mejor el profesor no sabe esa demostración y te catea, jeje.

Además, si no recuerdo mal la demostración decía que ni siquera hay que llegar a la mitad, que con llegar a la raíz cuadrada del número ya hay suficiente.
Y tambien podríamos saltarnos todos los números pares (puesto que son divisibles por 2), así que si quisieramos acelerar el proceso supongo que podríamos hacer algo así:

for($i = 3; $i <= sqrt($numero); $i+=2);
__________________
programador php
Responder Citando
  #5 (permalink)  
Antiguo 29 de octubre,2009, 23:14
Member
Nivel Experto por Msg
 
Fecha de Ingreso: jun 2007
Ubicación: España
Mensajes: 30
Predeterminado

Si no sabe la demostracion se le adjunta, cuanto mas perfecta sea la funcion mejor calificacion tendra. Lo de que hay que llegar hast la raiz de cuadrada es posible que fuese asi, pero hasta la mitad es un razonamiento muy intuitivo y no hay que recurrir a demostraciones que puedan ser un poco mas complicadas.

¿Lo de saltarse los numeros pares no seria antes de la llamada a la funcion esprimo()?

Podrian saltarse todos los que acaban en 0 2 4 5 6 8, teniendo que comprobar solo los que acaban en 1 3 7 9 es decir un 40% de los numeros (no recuerdo si por la terminacion podia saltarse alguno mas). Todo eso es ya coger un libro de matematicas y mejorar el codigo lo maximo posible.
Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Las caritas están Activado
El codigo [IMG] está Activado
Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado
Ir al Foro

Programacion : LWPI Solorecursos I programacion I abcdatos I TrucosTecnicos I servicios gratisI ofertas de ADSL Ipueblos20
Areas exclusivas:cursosIofertasIadslIwebtutoriales ISMSareaItutorialesItrucos de windows IgooglemaniaI programatium.netIcompras
noticias: SaludIOcio/cineIMusicaIMotorIDeportes IJuegos I FinanzasIMovilesIEnergiaIEcologiaITech-yIMujerIMACISaludIViajes-Pueblos
site programatium.com : site1 - site2 - site3 - site4 - site5 - site6 - site7 - site8
manuales Sugiere un manual para esta seccion
who's online
Linkanos
www.programatium.com© 1999 - web esta optimizada para Microsoft explorer 6.0
tutoriales

Content Relevant URLs by vBSEO 3.2.0