Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alviera en 4 Diciembre 2010, 16:21 pm



Título: NUMEROS PRIMOS
Publicado por: alviera en 4 Diciembre 2010, 16:21 pm
Buenos dias me gustaria que alguien pudiera explicarme como realizar un programa sencillo que me permita saber si el numero introducido es primo o no en c++, se que el programa deberia dividir el numero introducido por todos los numeros que le preceden incluso hasta llegar al mimso numero pero no se como progamarlo.

Nota: estoy empezando a programar sin embargo manejo la mayoria de las funciones if, do while, for, else, etc, etc, etc.

Saludos.


Título: Re: NUMEROS PRIMOS
Publicado por: Littlehorse en 4 Diciembre 2010, 18:23 pm
Bienvenido/a al foro alviera. Pone lo que llevas hecho y vemos si te podemos ayudar, en esta sección no se hacen tareas. Tal vez sea conveniente que revises los mensajes similares que aparecen justo abajo de este post.

Saludos
 


Título: Re: NUMEROS PRIMOS
Publicado por: Rockmore en 4 Diciembre 2010, 18:46 pm
Es muy sencillo. En un bucle metes el número a comprobar que se divida con exactitud entre el 2 y un número entero menos que él mismo, y si en algún momento se encuentra alguno, ese número no es primo. Es más, incluso te diré que ese mismo bucle lo puedes poner que se repita hasta la mitad del número introducido, ya que si no es divisible entre la primera mitad, tampoco lo será entre la segunda.


Título: Re: NUMEROS PRIMOS
Publicado por: do-while en 4 Diciembre 2010, 19:02 pm
¡Buenas!

Y no es que haya que comprobarlo hasta la mitad, sino que con comprobarlo hasta la raiz cuadrada basta, ya que si no divisible por un elemento menor o igual que la raiz cuadrada, tampoco lo es por uno mayor.

¡Saludos!


Título: Re: NUMEROS PRIMOS
Publicado por: N0body en 7 Diciembre 2010, 06:39 am
Me parece mucho más adeuado la respuesta que dio do while sobre la raiz cuadrada, ya que ésta es el "punto de simetría" de los divisores de un número. Un número entero "a" es divisor de otro entero "n" sí y sólo sí a*b=n, dónde "b" también es divisor de "n". Si a<raiz(n) entonces b>raiz(n)... y viceversa, osea que si no hallamos divisores antes de la raíz del número, podemos asegurar que tampoco los hay después.

También te sugiero que te acuerdes de buscar hasta la raíz del número INCLUSIVE, de otro modo el programa señalaría como primo a los cuadrados perfectos de primos.

Y por último te sugeriría, ya que sólo quieres ver la primidad de un número determinado, que abandones la búsqueda si encuentras algún divisor, acuerdate que no quieres saber la cantidad total de divisores, sólo con 1 bastará..