Trabajo de la universidad

Iniciado por Zeta255, 23 Marzo 2021, 02:48 AM

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

Zeta255

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 (cpp) [Seleccionar]

// Solicitar al usuario un numero para m y n y mostrar los numeros primos entre estos
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
int m=1,n=0,divisores=0;
cout<<"Ingrese el valor de m: ";
cin>>m;
cout<<"Ingrese el valor de n: ";
cin>>n;

for(int i=m;i<=n;i++)
{
if(m%i==0 || n%i==0)
{
divisores++;
}
}
cout<<endl<<"tiene "<<divisores<<" divisores"<<endl;
}



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

K-YreX

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 (cpp) [Seleccionar]

for(int i = m; i <= n; ++i) {
  for(int j = 1; j <= i; ++j) {
    // aqui compruebas la divisibilidad
  }
}


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
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

Zeta255

gracias amigo me ayudo mucho!