Duda con programa, de numeros primos

Iniciado por chewbaccaChaka, 18 Abril 2018, 19:33 PM

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

chewbaccaChaka

Buenas tardes,
Quisiera un poco de ayuda, tengo un problema, hacer un programa que imprima los numeros primos que esten en los primeros 100 numeros,
Lo que no se es como guardarlos en el arreglo para posteriormente imprimirlos,
Soy nuevo en esto,
gracias y saludos
El codigo que realize es el siguiente,
Código (cpp) [Seleccionar]
#include <stdio.h>
int main ()
{
int x[100]={0},i,z,a=0;

for (z=2;z<100;z++) //Conte a partir del 2, ya que el 1 no es numero primo
{
for (i=1;i<=100;i++)//Numeros que dividen
{
if(z%i==0) //operacion para saber si son primos
{
a=a+1;
}

}
}

if(a==2)
{
a=x[z];
printf("Los numeros primos del uno al 100 son: %d",x[z]);
}
return 0;
}

animanegra

Te comento mi punto de vista,
Parece que no tienes dudas con como imprimir si no con el propio algoritmo de calculo de los primos. Igual no necesitas si quiera el array.

Mi sugerencia.

Haz primero un programa para saber si un numero dado por la variable z es primo o no. En caso de ser primo lo imprimes en pantalla.

Cuando ya tienes hecho eso, solo tienes que repetir lo mismo (todo ese programa que te imprime z cuando es primo) para z desde 1 hasta 100.

Bajo mi punto de vista, deberias de afrontar los problemas dividiendolos en subproblemas no como un todo completo.


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

engel lex

hola! antes de hacer un programa siempre es bueno leer información relacionada, incluso tan simple como esto...

lo que te dirá cualquier articulo es que
- un numero siempre tendrá divisores iguales o menores a su raiz
- uno no es primo
- ningún par (mas que el 2) es primo

así que... una formula general para buscar numeros primos es

posible_primo = x
si x es 2, es primo (terminar programa)
si x es par, no es primo (terminar programa)
si x es 3, es primo (terminar programa)

entero i
para i desde 3, hasta i menor o igual que la raiz de x{
   si x es multiplo de i, no es primo (terminar programa)
   i = i+2
}
x es primo (terminar programa)


como la operación de raiz usualmente es "complicada" se invierte el sentido en "i menor o igual que la raiz de x" a "i*i menor o igual que x"




ahora con tu problema... lo más practico para resolverlo es agregar una variable que llamaremos "contador", esta empieza en 0 y cada vez que consigas un primo le sumas uno

Código (cpp) [Seleccionar]
int primos[100];
int i;
int contador = 0;
for(i = 2; i < 100; i++ ){
 if( es_primo(i) ){ //aquí tus operaciones, yo lo estoy resumiendo
   primos[contador] = i;
    contador++;
 }
}

printf("los numeros primos conseguidos son: ");
for(i = 0; i < contador; i++){
 printf("%i, ", primos[i]);
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

Bueno, en verdad tiene razón. Ir poniendo en un array o lista los números primos encontrados desde el 2 se puede llegar a acelerar la búsqueda de los sucesivos. Atendiendo a que la factorización se hace con primos, si buscando primos que son divisibles se llega al final de la lista sabemos que el número sobre el que se pregunta es primo. Incluso se puede acelerar más si llegado a un primo de la lista, su cuadrado es mayor al número en cuestión; se puede decir entonces que ese número es primo.