Programación General > C/C++
Numeros Primos.
JoRDi-18:
Hola:
Necesito un algoritmo que, dado un numero natural n, muestre por pantalla los n primeros números primos.
He intentado hacerlo pero me estoy volviendo loco y no tengo ni idea de cómo seguir. Alguien me puede ayudar? Pongo lo que tengo hecho, pero esque no me sirve... Ayudadme por favor!!
--- Código: Text --- #include <stdio.h>#include <stdlib.h> void Fprimos (int num, int vector[]); int cont=1; int i=1; int main (){ int n; int num=1; int vector[1000]={1}; printf ("Muestra por pantalla de los n primeros numeros primos."); printf ("\n\nIntroduce el numero n de numeros primos que mostrare: "); scanf ("%d", &n); while (cont <= n){ Fprimos (num, vector); num++; } printf ("\nLos %d primeros numeros primos son: ", n); for (i=0; i<=cont; i++){ printf ("%d", vector[i]); }} void Fprimos (int num, int vector[]){ for (i=1; i <= cont; i++){ if (num%vector[i]!=0){ if (i==cont){ vector[cont]=num; cont++; } }else{ if (i==cont) return; } }}
GhostGirl:
Hola!!!!. Un programilla que te imprime los n primeros números primos es:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
int main()
{
int n, j, divisores, numero, total_primos;
// Leemos el valor de n
fprintf(stdout,"Valor de n = ");
scanf("%d",&n);
total_primos = 0; // Controla el total de primos
numero = 1; // Controla los números a analizar
// Ciclo para obtener los 'n' números primos
while (total_primos < n)
{
divisores = 0; // Cuenta el número de divisores
// Para que un numero sea primo, no se deben encontrar divisores entre 2 y n-1
for(j=2;j<numero;j++)
{
if ( (numero % j) == 0) divisores++;
}
// Controla el numero de divisores encontrados
if (divisores == 0)
{
total_primos++;
fprintf(stdout,"Primo Nro. %d es %d\n ",total_primos,numero);
}
// Pasa al siguiente numero
numero++;
}
system("PAUSE");
return 0;
}
La idea es considerar que un numero primo es aquel que es sólo divisible por 1 y por si mismo, es decir que no deben haber divisores dentro del rango [2, x-1] para todo x.
Espero que te sirva de algo
Saludos
--
Yasna Meza Hidalgo
shephiroth:
buenas. Peazo codigos grandes que poneis. Aqui te pongo una funcion recursiva pequeñita que devuelve el proximo numero primo. Es decir, tu le pasas un numero (sobreentiende que es primo) y te muestra el siguiente.
int primoRecursivo(int num)
{
num++;
bool primo=true;
for (y=2;y*y<=num && primo;y++)
if (num%y==0) primo=false;
if (primo)
return num;
else
return primoRecursivo(num);
}
Si ahora, lo que quieres es mostrar x numeros primos con un simple bucle
primo=1;
for (z=0;z<x;z++)
{
primo=primoRecursivo(primo);
printf("Numero primo numero "+(z+1)+"es "+primo+"\n");
}
como veis este codigo es mucho mas reducido. Eso si, hay q entender recursivas xDD
EDITADO: la primera condicional de la recursiva tiene q ser <=, sino los numeros cuadrados (4,9,16,25...) los daría como primos xDD
GhostGirl:
Hola, mira tal vez tengas razón con respecto al largo del código, pero mi experiencia me ha indicado que cuando una persona se está iniciando en el mundo de la programación NO PUEDES hablarle de recursividad de buenas a primeras. El tema de la recursividad es algo complejo para quienes ya tienen un conocimiento de programación, imagina si se trata de alguien que recien se inicia ........
Saludos
--
Yasna Meza Hidalgo
QliX=D!:
--- Cita de: "shephiroth" --- buenas. Peazo codigos grandes que poneis. Aqui te pongo una funcion recursiva pequeñita que devuelve el proximo numero primo. Es decir, tu le pasas un numero (sobreentiende que es primo) y te muestra el siguiente.
int primoRecursivo(int num)
{
num++;
bool primo=true;
for (y=2;y*y<=num && primo;y++)
if (num%y==0) primo=false;
if (primo)
return num;
else
return primoRecursivo(num);
}
Si ahora, lo que quieres es mostrar x numeros primos con un simple bucle
primo=1;
for (z=0;z<x;z++)
{
primo=primoRecursivo(primo);
printf("Numero primo numero "+(z+1)+"es "+primo+"\n");
}
como veis este codigo es mucho mas reducido. Eso si, hay q entender recursivas xDD
EDITADO: la primera condicional de la recursiva tiene q ser <=, sino los numeros cuadrados (4,9,16,25...) los daría como primos xDD
--- Fin de la cita ---
Hey mr...
Proba pidiendole a tu "funcion" el primo del numero 2000000 (dos millones)...
Navegación
[#] Página Siguiente
Ir a la versión completa