Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: SXF en 6 Marzo 2012, 00:41 AM

Título: Reto de programacion
Publicado por: SXF en 6 Marzo 2012, 00:41 AM
Buenas, pues para pasar un rato divertido propongo un reto: Crear un codigo que nos diga si un número ES primo lo mas corto y eficiente posible, vale cualquier lenguaje (NO, este es el foro de C/C++);
Empiezo con el mio:

en c:


int esPrimo(int n){
   for (int i=2; i<n; i++) if(n%i==0) return 0;
   return 1;
}
Título: Re: Reto de programacion
Publicado por: Caballo_Alado en 6 Marzo 2012, 01:30 AM
Tiene error el que puse no me había dado cuenta e.e trabajo para hacer otro ahorita. :silbar:
Título: Re: Reto de programacion
Publicado por: SXF en 6 Marzo 2012, 02:03 AM
El problema de ese code es que si es primo no devuelve nada.
Título: Re: Reto de programacion
Publicado por: rir3760 en 6 Marzo 2012, 02:07 AM
Una discusion reciente donde se describe como verificar si un numero es primo utilizando un bucle y con ciertas mejoras (en relacion al publicado en este tema) es quien me ayuda con este programa!!!!numeros!!! (http://foro.elhacker.net/programacion_cc/quien_me_ayuda_con_este_programanumeros-t355418.0.html).

Un saludo
Título: Re: Reto de programacion
Publicado por: SXF en 6 Marzo 2012, 02:14 AM
He pensado en algo así:

int primo(int n, i){
   for(;((n>i)&&((n%i)!=0));i++)  return ((n%i)!=0);
}


EI: juntando mensajes.

Bueno veo que un poco diferente, alli se habla de numeros circulares  primos. Aunque gracias por la anotación.
Título: Re: Reto de programacion
Publicado por: Xandrete en 6 Marzo 2012, 20:03 PM
Cita de: SXF en  6 Marzo 2012, 02:14 AM
He pensado en algo así:

int primo(int n, i){
    for(;((n>i)&&((n%i)!=0));i++)  return ((n%i)!=0);
}


EI: juntando mensajes.

Bueno veo que un poco diferente, alli se habla de numeros circulares  primos. Aunque gracias por la anotación.
Cita de: SXF en  6 Marzo 2012, 00:41 AM
Buenas, pues para pasar un rato divertido propongo un reto: Crear un codigo que nos diga si un número ES primo lo mas corto y eficiente posible, vale cualquier lenguaje;
Empiezo con el mio:

en c:


int esPrimo(int n){
    for (int i=2; i<n; i++) if(n%i==0) return 0;
    return 1;
}


Lo de corto lo cumple. Lo de eficiente...  :rolleyes:

Título: Re: Reto de programacion
Publicado por: $Edu$ en 7 Marzo 2012, 18:43 PM
int esPrimo(int n){
   for (int i=2; i<n; i++) if(n%i==0) return 0;
   return 1;
}


Si haces que vaya desde i = 2 a i = Raiz(n) sera mas rapido.
Título: Re: Reto de programacion
Publicado por: naderST en 7 Marzo 2012, 19:14 PM
Cita de: SXF en  6 Marzo 2012, 00:41 AM
Buenas, pues para pasar un rato divertido propongo un reto: Crear un codigo que nos diga si un número ES primo lo mas corto y eficiente posible, vale cualquier lenguaje;
Empiezo con el mio:

en c:


int esPrimo(int n){
   for (int i=2; i<n; i++) if(n%i==0) return 0;
   return 1;
}

Eso es C++ :silbar:
Título: Re: Reto de programacion
Publicado por: nirvguy en 7 Marzo 2012, 19:22 PM
2**x es lo mismo que 2 elevado a la x. def es para definir la función. y lo demás es similar a c/c++ salvo que en python no se pone que tipo de dato devuelve la función ya que puede devolver cualquiera. Te lo pongo en c++:
Código (cpp) [Seleccionar]

bool primo(int x) {
   float tmp = pow(x,2)/x;
   return pow(x,2)-(int)tmp*x;
}

claro incluyendo math.h
Un libro que está muy bueno, bastante completo, es https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf (https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf). Deberías aprenderlo es muy práctico.

EDITADO: Estaba respondiendo.... se me borro el post, ¿Por qué?
Título: Re: Reto de programacion
Publicado por: Eternal Idol en 7 Marzo 2012, 19:29 PM
Cita de: nirvguy en  7 Marzo 2012, 19:22 PMEDITADO: Estaba respondiendo.... se me borro el post, ¿Por qué?

Los mensajes no se borran solos y mucho menos dos veces. ¿No te parece? Lee tus mensajes privados y no pongas codigo de Python aca, no corresponde (diga lo que diga cualquier otro usuario).