NUMEROS PRIMOS

Iniciado por alviera, 4 Diciembre 2010, 16:21 PM

0 Miembros y 1 Visitante están viendo este tema.

alviera

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.

Littlehorse

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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Rockmore

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.

do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

N0body

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á..