martes, 26 de agosto de 2014

Sacar los número primos del 1 al 100 en C

Este programa en C saca los números primos del 1 al 100.

Por definición un número primo es un entero mayor que 1 que tiene únicamente dos divisores distintos: él mismo y 1.

Lo que hace el programa es tomar todos los números y dividirlos por cada uno de los 100 números, entonces verifica el número de divisores que tiene y si es igual a 2 entonces el valor actual es un número primo y lo imprime.

Para calcular los número primos hasta n cantidad, solo se debe cambiar los valores "100" de los ciclos for.

#include
int main(void)
{
for (int j=2;j<=100;j++){//por definicion el 1 no es primo, se empieza en 2
int a=0;
for(int i=1;i<=100;i++)//divide a j entre los números del 1 al 100
{
   if(j%i==0) // si num1 módulo de i es 0, incrementamos a en 1.
   a++;
}
if (a==2){ //si solo tiene dos números divisores entonces es primo y se imprime
printf("%d\n", j);
}
 }
}

13 comentarios:

Anónimo dijo...

Eres grande!

Anónimo dijo...

Gracias, por aporte esta bien explicado...

Anónimo dijo...

esta muy bien pero aun se puede mejorar para evitar realizar tantos ciclos sin necesidad de ellos simplemente en ves de recorrer los 100 numeros para dividir el numero entre los 100 debemos colocar que se repita mientras este sea menor al numero que se esta verificando, no tiene sentido dividir un 80 entre 81 o 82 hasta el 100 si solo se requiere checar hasta el mismo numero.
tomenlo en cuenta para que tengan un mejor rendimiento

Carlos Kraimer dijo...

PARA HACER MAS EFICIENTE EL CODIGO, SIRVE LA ESTRATEGIA DE BUSCAR DIVISORES HASTA LA MITAD DEL NUMERO. SI EL NUMERO ES PRIMO TENDRÁ SOLO 2 DIVISORES; EL 1 Y EL MISMO NUMERO. SI HASTA LA MITAD DEL NUMERO NO HAY MAS QUE 1 COMO DIVISOR ENTRONCES ES PRIMO. SE ENTIENDE???

Carlos Kraimer dijo...

PARA HACER MAS EFICIENTE EL CODIGO, SIRVE LA ESTRATEGIA DE BUSCAR DIVISORES HASTA LA MITAD DEL NUMERO. SI EL NUMERO ES PRIMO TENDRÁ SOLO 2 DIVISORES; EL 1 Y EL MISMO NUMERO. SI HASTA LA MITAD DEL NUMERO NO HAY MAS QUE 1 COMO DIVISOR ENTRONCES ES PRIMO. SE ENTIENDE???

Anónimo dijo...

Por favor este es mi wasap:0967783132 o mi gmail: hectorfidelin10@gmail.com
Explicame el programa profavor. me llamo hector salazar

Anónimo dijo...

#include
#include
#include

// codigo mejorado para lenguaje C


main()
{
int a,j,i;

for (j=2;j<=100;j++){ //por definicion el 1 no es primo, se empieza en 2
a=0;
for(i=1;i<=100;i++)//divide a j entre los números del 1 al 100
{
if(j%i==0) // si num1 módulo de i es 0, incrementamos a en 1.
a++;
}
if (a==2){ //si solo tiene dos números divisores entonces es primo y se imprime
printf("%d\n", j);

}
}

getch();
}

Buda dijo...

¿Por qué se declara "a" dentro de un for, en vez de declararlo en la cabeza del programa?

osea, como una variable normal fuera de toda estructura pero dentro de main

Anónimo dijo...

amigos tengo un problema necesito un código para saber si un numero es primo o no, pero debo hacerlo sin sentencias de control,puedo utilizar todos los operadores que quiera, pero ninguna sentencia de control NO if, for etc.

Anónimo dijo...

Hola cuando el primer bucle es 4 y el segundo es 2 --> 4%2 == 0 por lo que tomaria el 4 como numero primo?

x0s3 dijo...

No, la sentencia de (j%i == 0) no comprueba si un número es primo, lo que comprueba es si es divisible y si lo es incrementa a.
Si a es mayor que dos significa que hay más numeros divisibles a parte del 1 y el número mismo (definición de número primo) y por lo tanto, no será primo.
Saludos

Moilu dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

capo!