elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  detectando numero primos (problema)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: detectando numero primos (problema)  (Leído 5,381 veces)
Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
detectando numero primos (problema)
« en: 17 Mayo 2010, 02:06 am »

bueno tengo un problema..
detecta si el numero ingresado NO es primo , pero no me puedo dar manija para que salte el print si ES primo..
no se si me hago entender
este es el codigo que tengo ;D
Código
  1. #include <stdio.h>
  2. main () {
  3.     int ent,res,div,x,y,cont;
  4.     scanf("%d",&ent);
  5.     y=ent-1;//restandole 1 a el numero entero
  6.     for (x=2;x<=y;x++) {//haciendo el conteo de 2 a y
  7.         res=ent%x; //sacando el cociente entre ent y x ejemplo : 8 / 2 = 0
  8.         if (res==0) {
  9.                     printf("%d NO es primo\n",ent);
  10.                     }
  11.         }//cerrando FOR
  12.     fflush(stdin);
  13.     getchar();
  14.     }
  15.  
el tema es que intente usar break; al final de

 printf("%d NO es primo\n",ent);

pero tiene problemas a la hora de detectar algunos numeros
termina diciendo q 135 x ejemplo es primo xD
se que soy medio desprolijo en cuanto el codigo , pero yo me entiendo , no se ustedes :P

ahh y tal ves en la libreria math.h exista una forma mas sencilla de lograrlo , pero no lei , ademas me gusta romperme la cabeza un poco , pero esto me esta ganando ;D
alguna sugerencia ?
gracias
saludos


En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: detectando numero primos (problema)
« Respuesta #1 en: 17 Mayo 2010, 02:22 am »

Código
  1. Prueba con esto:
  2.  
  3. #include <stdio.h>
  4. main () {
  5.     int ent, res, x;
  6.     scanf("%d",&ent);
  7.     for ( x = 2;x < (int)(ent / 2);x++) {
  8.         res = ent % x;
  9.         if (res==0){
  10.   printf("%d NO es primo\n",ent);
  11.   x = ent + 1;
  12. }
  13.     }
  14. }

Conste que esto fue un poco mejorado, sobre todo en el for, en la condición para finalizar el ciclo.
Valga la aclaración que modificar la variable de un ciclo incondicionado, no es muy bien vista... así como tampoco un break. Lo ideal para este tipo de casos, según planteas la solución es aplicar un ciclo condicionado.


« Última modificación: 17 Mayo 2010, 02:24 am por dr.~ » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: detectando numero primos (problema)
« Respuesta #2 en: 17 Mayo 2010, 02:34 am »

Y que pasa si ingreso el numero 1. Pwned!
En línea

Te vendería mi talento por poder dormir tranquilo.
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: detectando numero primos (problema)
« Respuesta #3 en: 17 Mayo 2010, 02:38 am »

Aqui otro modo de hacerlo, mostrando los numeros primos hasta el 1000
Código
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i=0;
  5. for(int num=2; num <= 1000; num++)
  6. {
  7. for(i = 2; num % i != 0 && i < (num-1); i++){};              
  8. if(num!=1 && num % i != 0 || num ==2)
  9. printf("%d es primo\n",num);
  10. }
  11. }

Falta mejorar el 2do for para disminuir el numero de iteraciones.
« Última modificación: 17 Mayo 2010, 02:44 am por 43H4FH44H45H4CH49H56H45H » En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: detectando numero primos (problema)
« Respuesta #4 en: 17 Mayo 2010, 02:39 am »

Eso es algo que debería preguntar al principio, por supuesto no se puede dar la solución concreta.

Citar
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje

Lo mejor para esto es practicar con la criba de eratóstenes.
En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: detectando numero primos (problema)
« Respuesta #5 en: 17 Mayo 2010, 02:54 am »

Código
  1. bool isPrime(unsigned int x)
  2. {
  3.    if(x)
  4.     {
  5.        bool check = true;
  6.        for(int i = 2; i<x/2;i++)
  7.            if(!x%i)
  8.                check = false;
  9.        return check;
  10.     }
  11.    return false;
  12. }
En línea

|-
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: detectando numero primos (problema)
« Respuesta #6 en: 17 Mayo 2010, 03:46 am »

Si hago:

Código
  1. if(isPrime(8)) printf("es primo\n");
Código
  1. if(isPrime(4)) printf("es primo\n");
Código
  1. if(isPrime(5)) printf("es primo\n");

En todas devuelve que es primo  :huh:
Como utilizas tu código??
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: detectando numero primos (problema)
« Respuesta #7 en: 17 Mayo 2010, 04:42 am »

Código
  1. Prueba con esto:
  2.  
  3. #include <stdio.h>
  4. main () {
  5.     int ent, res, x;
  6.     scanf("%d",&ent);
  7.     for ( x = 2;x < (int)(ent / 2);x++) {
  8.         res = ent % x;
  9.         if (res==0){
  10.   printf("%d NO es primo\n",ent);
  11.   x = ent + 1;
  12. }
  13.     }
  14. }

Conste que esto fue un poco mejorado, sobre todo en el for, en la condición para finalizar el ciclo.
Valga la aclaración que modificar la variable de un ciclo incondicionado, no es muy bien vista... así como tampoco un break. Lo ideal para este tipo de casos, según planteas la solución es aplicar un ciclo condicionado.
gracias , recien empiezo con lo que es c , me faltan algunas cosas como funciones ,punteros y otras como pa poder tenerlo mas claro
Y que pasa si ingreso el numero 1. Pwned!
una ves echo el codigo y funcionando , se evaluaria si es 1 y no pasaria a otra instancia , diciendo q es 1 es primo o se lo que sea ;D ya lo tenia en cuenta ;D
saludos
En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: detectando numero primos (problema)
« Respuesta #8 en: 17 Mayo 2010, 06:11 am »

Código
  1. bool isPrime(unsigned int x)
  2. {
  3.    if(x)
  4.     {
  5.        bool check = true;
  6.        for(int i = 2; i<x/2;i++)
  7.            if(!x%i)
  8.                check = false;
  9.        return check;
  10.     }
  11.    return false;
  12. }

hay un pequeño error:

Código
  1. bool isPrime(unsigned int x)
  2. {
  3.    if(x)
  4.     {
  5.        bool check = true;
  6.        for(int i = 2; i<x/2;i++)
  7.            if(!(x%i))
  8.                check = false;
  9.        return check;
  10.     }
  11.    return false;
  12. }

de todas formas, no lo probé en profundidad, pero me hace que debería funcionar...

S2
En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: detectando numero primos (problema)
« Respuesta #9 en: 17 Mayo 2010, 07:38 am »

Muy cierto lo que dijo karman, el ! tiene prioridad sobre % así que debe quedar !(x%i) en el if.
En línea

|-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMA EN C++ QUE ME PERMITA DESPLEGAR LOS NUMERO PRIMOS
Programación C/C++
alexkpaz 3 3,947 Último mensaje 2 Enero 2012, 06:42 am
por BlackZeroX
Marmita - Detectando Ataques Man In The Middle
Seguridad
Stuxnet 1 2,444 Último mensaje 4 Octubre 2013, 17:53 pm
por skan
detectando malware con desensamblador « 1 2 »
Ingeniería Inversa
Drewermerc 12 7,187 Último mensaje 25 Abril 2014, 07:19 am
por Drewermerc
Problema arrays-primos c++
Programación C/C++
Estebanmc2912 2 2,275 Último mensaje 15 Octubre 2015, 14:21 pm
por DarK_FirefoX
Detectando el Pony Trojan con RegEx usando CapLoader
Análisis y Diseño de Malware
r32 0 1,866 Último mensaje 9 Julio 2018, 20:03 pm
por r32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines