Título: Criba de eratóstenes en C. Publicado por: estudiante_1 en 27 Julio 2015, 17:05 pm Realizar un programa que calcule los números primos entre 1 y N mediante la criba
de Eratóstenes. El sistema consiste en crear una tabla con los números del 2 a N. El primer número no tachado (el 2) es primo. Tachar todos los múltiplos del 2. El primer número no tachado (el 3) es primo. Tachar todos los múltiplos del 3. El primer número no tachado (el 5) es primo. Tachar todos los múltiplos del 5. Mi problema es que no sé como "tachar" los múltiplos. Este es lo que yo llevo hecho: Código: #include<stdio.h> Título: Re: Criba de eratóstenes en C. Publicado por: A.I. en 27 Julio 2015, 20:42 pm Poner en la posición el valor del indice es información redundante. En lugar de hacer eso al recorrer el vector pon un 0 (no primo) o un 1 (primo). Además utilizando punteros (o simple aritmética con los indices) puedes ahorrarte bastantes operaciones.
Título: Re: Criba de eratóstenes en C. Publicado por: Usuario Invitado en 27 Julio 2015, 21:05 pm Yo hice lo mismo para un amigo pero en Java. Te dejo el gist para que lo veas y lo traduzcas a C: Números primos con criba de eratóstenes (https://gist.github.com/GusGarsaky/9ef810d02e1b07a9d97c)
Título: Re: Criba de eratóstenes en C. Publicado por: estudiante_1 en 28 Julio 2015, 00:15 am Poner en la posición el valor del indice es información redundante. En lugar de hacer eso al recorrer el vector pon un 0 (no primo) o un 1 (primo). Además utilizando punteros (o simple aritmética con los indices) puedes ahorrarte bastantes operaciones. No entiendo lo que quieres decir, además en este problema no me dejan utilizar punteros.Yo hice lo mismo para un amigo pero en Java. Te dejo el gist para que lo veas y lo traduzcas a C: Números primos con criba de eratóstenes (https://gist.github.com/GusGarsaky/9ef810d02e1b07a9d97c) Soy nuevo en esto, no llevo ni un año y la verdad es que solo sé "manejar" C. Gracias de todos modos. Título: Re: Criba de eratóstenes en C. Publicado por: estudiante_1 en 28 Julio 2015, 00:35 am He sacado una forma de tachar los múltiplos, es esta:
Código: for(i=2;i<n;i++){ Título: Re: Criba de eratóstenes en C. Publicado por: A.I. en 28 Julio 2015, 00:41 am Cómo te veo bastante perdido te pongo un código sencillito, es bastante auto explicativo pero si tienes alguna duda pregunta. Cómo no puedes usar punteros puedes sustituir la parte del calloc por crearte un vector y rellenarlo tú. Sobre todo compáralo con lo que tenías tú escrito y con lo que tenías en mente a la hora de implementarlo.
Código
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Título: Re: Criba de eratóstenes en C. Publicado por: estudiante_1 en 28 Julio 2015, 00:48 am Vale, aunque no entiendo muy bien tu programa, me gustaría hacerlo como he pensado. Dime que sabes que tengo que hacer para que me imprima los que sí son primos :silbar:
Título: Re: Criba de eratóstenes en C. Publicado por: estudiante_1 en 28 Julio 2015, 01:39 am Me sale casi correcto, el problema es que a la salida que me da el programa me salen algunos 0. Es este:
Código: #include<stdio.h> Título: Re: Criba de eratóstenes en C. Publicado por: furciorifa en 19 Agosto 2015, 22:59 pm Código
Esta es la respuesta más fácil que se me ocurre utilizando arreglos, la otra manera todavía más fácil es haciendo un for sin arreglos e imprimir un 2*n +1 que es un número impar por definición. |