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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  NUMEROS PRIMOS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: NUMEROS PRIMOS  (Leído 3,630 veces)
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
NUMEROS PRIMOS
« en: 15 Junio 2012, 11:29 am »

Buenos días,

Soy nuevo en el foro, llevo muy poco tiempo estudiando el lencuaje C, y estoy tratando de hacer un programa que ingresando 2 numeros diga los primos que hay entre ambos. Esto es lo que he hecho. Podeis reiros.... no os corteis; pero por favor alguien me puede decir que falla?

/*Escribir un programa que nos pida por pantalla dos números enteros y nos muestre los números primos que hay entre ellos.*/

#include <stdio.h>
#include <conio.h>

main ()
{
int  x, c, y;


     printf(" dime un número");
     scanf("%i", &c);
     
     printf(" dime otro número mayor");
     scanf("%i", &y);
     
 
     
     while (c<=y)
     {
              for (x=2;x=c/2;x++)
           if ((c%x!=0))
       
     
     printf("%i",c);
     
   
     c++;
     getch();
     }
     
     
}

Muchas gracias


En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: NUMEROS PRIMOS
« Respuesta #1 en: 15 Junio 2012, 11:50 am »

Primero, debes recordar que '=' asigna valores y '==' los compara.

Por otro lado, tu problema radicaba del bucle for.

La condición hacía que tu programa no entrase en el bucle para comprobar el resto de la división.

Código:
for (x=2;x=c/2;x++)

La condición que necesitas es:
Código:
for (x=2;x<=c/2;x++)

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. main ()
  5. {
  6. int  x, c, y, p;
  7.  
  8. printf(" Dime un numero: ");
  9. scanf("%i", &c);
  10.  
  11. printf(" Dime otro numero mayor: ");
  12. scanf("%i", &y);
  13.  
  14. while (c<=y)
  15. {
  16. for (x=2;x<=c/2;x++)
  17. {
  18. if (c%x==0)
  19. p = 0;
  20. }
  21.  
  22. if(p==1)
  23. printf("%i",c);
  24.  
  25. p = 1;
  26. c++;
  27. getch();
  28. }
  29. }

En resumen, lo tenías casi todo hecho, sólo te equivocaste con un bucle.

Para la próxima, te sugiero que cuides un poco más la identación y utilices los tags GESHI de code para que se vea mejor la estructura.


« Última modificación: 15 Junio 2012, 18:19 pm por Saberuneko » En línea

ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: NUMEROS PRIMOS
« Respuesta #2 en: 15 Junio 2012, 14:04 pm »

Muchísimas gracias por tu ayuda; sin embargo hay ciertas cosas que no me quedan claras:

if ((c%x!=0))  : Me has modificado!= por ==. Sin embargo yo haía puesto esa instrución con el fin de pedirle que cuando al dividir por un número fuera distinto de 0 entonces lo imprimiese ( es primo). ( Ese comando de tosas formas es incompleto pues puede ocurrir que por ejemplo el 13 dividido por si mismo de igual a 0 y sin embargo sí es primo.

Por otro lado no entiendo porqué has puesto p=1.

Lo he compilado y no me ejecuta el programa
¿ que te parece?

un saludo
       
En línea

maxim_o

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: NUMEROS PRIMOS
« Respuesta #3 en: 15 Junio 2012, 15:10 pm »

Una forma de encontrar numeros primos es encontrar un divisor >1 y < que la mitad de ese numero...
Si por ejemplo pones el 7.
Dividirias entre 2,3 no da de resto 0 es primo
el 8 entre 2 ya encuentra un divisor, no es primo...

while (c<=y)
   {
      for (x=2;x<=c/2;x++)
      {
         if (c%x==0)
            p++;
      }
                if (p==1)
                    printf("%i es primo /n" , c) ;
      c++;
      p = 1;
      getch();
   }
En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: NUMEROS PRIMOS
« Respuesta #4 en: 15 Junio 2012, 17:58 pm »

Lo he editado y dejado como estaba antes de estropearlo.

Había puesto una booleana p, que me olvidé quitar
Eso también explica el uso de == en vez de !=.

Al intentar desaparecer dicha booleana lo dejé mal.
Lo siento, es que a veces soy imbécil...

Si funciona, ¿para qué lo toqué? Te lo dejo como lo tenía cuando funcionó.

Pruébalo ahora.
« Última modificación: 15 Junio 2012, 18:22 pm por Saberuneko » En línea

ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: NUMEROS PRIMOS
« Respuesta #5 en: 16 Junio 2012, 18:13 pm »

Muchas gracias por tu ayuda; me lo has explicado clarísimo

un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Python
katas 2 9,898 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 6,082 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
Numeros primos
Programación C/C++
Ander123 6 3,364 Último mensaje 30 Agosto 2012, 21:15 pm
por leosansan
Dos resultados sobre números primos nos acercan a la demostración de conjeturas
Noticias
wolfbcn 2 2,103 Último mensaje 23 Mayo 2013, 16:11 pm
por ivancea96
Numeros primos
Programación C/C++
Antonio05550 2 1,740 Último mensaje 2 Octubre 2013, 20:20 pm
por Miky Gonzalez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines