Programa que imprima los 1000 primeros numeros primos

Iniciado por muymuyperdido, 24 Noviembre 2012, 20:30 PM

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

muymuyperdido

Almacenandolos en un vector, no sé como plantearlo
Si alguien es capaz de hacerlo por favor ayuda, o al menos unas pautas para no perderme.
Gracias!

Ferno

Bueno, podrías intentear hacer algo de código.

Una pequeña ayuda... sin que importe la eficiencia. Puedes hacer un loop con un flag (que sería más bien un contador) que te diga si has llegado a los 1000 números primos almacenados o no (o ver el último índice de tu vector). Dentro de este loop, tomarás números del 0 hasta el que sea (hasta que se cumpla la condición de corte) y llamarás a una función que verifique si es primo o no. Si es primo, lo almacenas en el vector y aumentas en 1 el flag.

muymuyperdido

Es que no he estudiado esas funciones, sé lo básico...printf, scanf, for, do while, while, vectores...no más.

Ferno

Y con eso es suficiente!
La función para saber si un número es primo o no tenés que escribirla vos!

Sólo debes saber cuándo un número es primo y codear dichas condiciones para testear si un número recibido por parámetro es primo o no. Dependiendo si lo es o no devuelves algún tipo de valor.

muymuyperdido

Si, el codigo para saber si es primo o no lo sé, pero eso he de meterlo en una función para almacenarlos todos en un vector (que almacene eso, los 1000 primeros primos)

Ferno

Bueno si sabes hacer al menos esa parte, programalo y postealo acá. Y codeá como se te ocurre a partir de eso guardar los valores. A partir de ahí se te puede ayudar mejor!

Saludos

leosansan

#6
A la vista del código que pones en el post "Programa con funciones en función de una opción" salta a la vista que más bien parece una falta de fe en ti mismo o que te has bloqueado. Así que ahí va una posible solución a tu problema, calcula los N primos indicados guardándolos en un array como pedias:
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <math.h>
int main()
{
   int i,j=0,N,primos[1001];
   printf ("Introduzca un numero:");
   scanf ("%d",&N);
   for (i=0;j<N;i++){
       if (esPrimo(i)!=0) {
           primos[j]=i;
           j++;
       }
   }
   for (i=0;i<N;i++)
       printf ("%d   ",primos[i]);
   return 0;
}
int esPrimo(int n)
{
int rq ,i;
rq = (int) sqrt (n);
for ( i = 2; i <= rq; i++)
{
if (fmod(n,i) == 0)
return 0;
}
return n;
}

Saluditos!.

Beakman

Cita de: leosansan en 24 Noviembre 2012, 22:29 PM
A la vista del código que pones en el post "Programa con funciones en función de una opción" salta a la vista que más bien parece una falta de fe en ti mismo o que te has bloqueado. Así que ahí va una posible solución a tu problema, calcula los N primos indicados guardándolos en un array como pedias:
Código (cpp) [Seleccionar]
( ... )
Saluditos!.



Qué gracia tiene si le regalás el programa? Esto no lo ayuda en nada. Al contrario, lo perjudica.