Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Saber si un numero es primo

Estas en el tema de Saber si un numero es primo en el foro de C/C++ en Foros del Web. Hola, if (numero % 2 ==0) es primo else no es primo se hace de esta forma sin usar ciclos?. se me ha olvidado xD!...
  #1 (permalink)  
Antiguo 10/04/2015, 16:28
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Pregunta Saber si un numero es primo

Hola,

if (numero % 2 ==0)
es primo

else
no es primo

se hace de esta forma sin usar ciclos?.
se me ha olvidado xD!
  #2 (permalink)  
Antiguo 10/04/2015, 16:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Saber si un numero es primo

Espero que cierto usuario que empieza con vango no venga y escupa el código así nada mas.

RGT planeas pasarte todo tu curso preguntando aquí? Realmente te haz puesto a pensar 10 minutos en los problemas que te dan? o al menos intentarlo?

Para empezar esa no es la definición de un numero primo. La definición que seguramente te aprendiste en prepa: "Todo numero mayor o igual a 2, cuyo divisores solamente sean 1 y el mismo". Eso significa que no hay numero entre (1, n) exclusive que sean divisores de ese numero.

Toma lápiz y papel y haz la prueba con los números del 2 al 10.
  #3 (permalink)  
Antiguo 10/04/2015, 17:15
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Pregunta Respuesta: Saber si un numero es primo

Cita:
Iniciado por razpeitia Ver Mensaje
Espero que cierto usuario que empieza con vango no venga y escupa el código así nada mas.

RGT planeas pasarte todo tu curso preguntando aquí? Realmente te haz puesto a pensar 10 minutos en los problemas que te dan? o al menos intentarlo?

Para empezar esa no es la definición de un numero primo. La definición que seguramente te aprendiste en prepa: "Todo numero mayor o igual a 2, cuyo divisores solamente sean 1 y el mismo". Eso significa que no hay numero entre (1, n) exclusive que sean divisores de ese numero.

Toma lápiz y papel y haz la prueba con los números del 2 al 10.
Hola hermano,
pienso todo antes de pedir ayuda aqui, este foro es mi último recurso.

He pensado y llegue a esta conclusion:

Código:
if (liNumero / liNumero == 1 && liNumero / 1 == liNumero)
        printf("\nEs primo.\n");

    else
        printf("\nNo es primo.\n");
ej:
13 / 13 = 1
ó
13 / 1= 13

si no es eso, entonces no es primo.

estoy en lo correcto?.
  #4 (permalink)  
Antiguo 10/04/2015, 19:09
 
Fecha de Ingreso: abril-2015
Mensajes: 8
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Saber si un numero es primo

este es mi método:

Código:
    int numero,d,cont=0;
    do{
       cout<<("Ingrese numero :");
       cin>>numero
    }while(numero<=1); //el numero ingresado tiene que ser mayor que uno, ya uno no es primo por definición.
    for(d=1;d<=numero;d++){
    	if(num%d==0) {
    		cout<<d<<" ";
        	cont++;
    	}
    }
    if(cont==2)     
    	cout<<"Es primo";
    else
    	cout<<"No es primo";
  }
  #5 (permalink)  
Antiguo 10/04/2015, 22:11
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 4 meses
Puntos: 22
Respuesta: Saber si un numero es primo

Hola RGT
Cita:
Iniciado por RGT Ver Mensaje
...
He pensado y llegue a esta conclusion:

Código:
if (liNumero / liNumero == 1 && liNumero / 1 == liNumero)
        printf("\nEs primo.\n");

    else
        printf("\nNo es primo.\n");
ej:
13 / 13 = 1
ó
13 / 1= 13

si no es eso, entonces no es primo.

estoy en lo correcto?.
¿ Y que hay con 12 ?
12 / 12 = 1
12 / 1 = 12

¿ Y con 8 ?
8 / 8 = 1
8 / 1 = 8
Ambos cumplen la condición y sin embargo es evidente que estos dos últimos no son primos.

Lo que te explicó razpeitia, es que son primos cuando solo son divisibles por si mismos y la unidad, eso implica que no lo son por nigún otro mayor que 2 y menor que él.
El modo mas simple de comprobación que conozco es:
Código C:
Ver original
  1. int esprimo(int num) {
  2.     int i;
  3.  
  4.     for ( i=2; i < num; i++ )
  5.       if ( num  % i == 0 ) return 0;
  6.  
  7.     return 1;
  8. }
una mejora sería recorrer hasta la raíz cuadrada del número, pero necesita la inclusión de math.h o cmath.

No quiere decir que no exista, pero al menos yo no conozco un modo genérico de verificar si un número es primo y que evite el uso de ciclos. Los métodos de Fermat y Euler, las cribas de Eratóstenes y cuadrática también lo hacen.

Saludos.

Etiquetas: numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.