Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zeta255 en 23 Marzo 2021, 02:48 am



Título: Trabajo de la universidad
Publicado por: Zeta255 en 23 Marzo 2021, 02:48 am
Tengo que hacer un programa que busque entre A y B los numeros primos que existan lo trato de hacer pero solo me tira los primeros del 1 al 10 y si pongo el 20 sale mal, alguien me podria ayudar, adjunto el codigo

Código
  1. // Solicitar al usuario un numero para m y n y mostrar los numeros primos entre estos
  2. #include<iostream>
  3. #include<iomanip>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int m=1,n=0,divisores=0;
  9. cout<<"Ingrese el valor de m: ";
  10. cin>>m;
  11. cout<<"Ingrese el valor de n: ";
  12. cin>>n;
  13.  
  14. for(int i=m;i<=n;i++)
  15. {
  16. if(m%i==0 || n%i==0)
  17. {
  18. divisores++;
  19. }
  20. }
  21. cout<<endl<<"tiene "<<divisores<<" divisores"<<endl;
  22. }

MOD: El código debe ir entre etiquetas de Código GeSHi


Título: Re: Trabajo de la universidad
Publicado por: K-YreX en 23 Marzo 2021, 06:59 am
Para futuras consultas, el código debe ir entre etiquetas de Código GeSHi. Puedes seleccionarlas desde un desplegable que hay encima del cuadro de texto que dice "Código GeSHi" donde puedes elegir tu lenguaje de programación o escribiendo directamente:
[code=cpp]
Tu código aquí
[/code]


El problema es el cálculo que estás haciendo. Piensa que i va desde m hasta n entonces tienes que ir comprobando si cada i es primo o no y no es eso lo que haces. Para ello tendrías que hacer otro bucle dentro de ese que vaya desde 1 hasta i y comprobar ahí cuántos divisores tiene.
Código
  1. for(int i = m; i <= n; ++i) {
  2.  for(int j = 1; j <= i; ++j) {
  3.    // aqui compruebas la divisibilidad
  4.  }
  5. }

Este código no es el más eficiente pero es el mejor para empezar ya que se ve claramente lo que estás haciendo. Cuando consigas que te funcione puedes intentar mejorarlo poco a poco o comentarlo aquí.

Suerte  :-X


Título: Re: Trabajo de la universidad
Publicado por: Zeta255 en 23 Marzo 2021, 19:05 pm
gracias amigo me ayudo mucho!