jump to navigation

Números primos en C. 12 / julio / 2007

Posted by jgutgil in C/C++.
trackback

Si buscamos en Google las mismas palabras que el título de este post encontraremos 396.000 resultados.

Personalmente, llevo un .c en mi pendrive llamado “numerosPrimos.c” el cual me ha sacado de más de un apuro. Es algo que siempre olvido, un algoritmo para calcular si un número es primo y al parecer, no soy el único.

A veces, las cosas más simples son las más difíciles de recordar.

A continuación pondré dicho código por si alguien llega aquí con esa duda le pueda servir, al fin y al cabo, soy estudiante y con este blog lo que pretendo es solucionar posibles problemas que puedan tener aquellos que llegan aquí.

  • Código

int esPrimo(int a){
int b=0;
int res=0;//Es primo
int i=2;
while(i<a && b==0){
if(a%i==0){
b=1;
res=1;//No es primo
}else i++;
}
return res;
}

Esta función devuelve cero si el número SÍ es primo, y uno si NO lo es.

About these ads

Comentarios»

1. er sholooooooo - 27 / agosto / 2007

Aunque pueda parecer una tontería, es bastante útil este código para los que empezamso en esto de la programación.

Sigue así.

er_sholooooooo

2. eduardo - 12 / septiembre / 2007

alguine podria explicarme como el programa obtiene el resultado , es ke no entiendo muy bien el proceso del programa..????

3. jgutgil - 17 / septiembre / 2007

Perdona Eduardo, pero he estado muy ocupado y no me había dado cuenta de que habías escrito una consulta.

A ver, este código recibe un número entero (a), el cual decide si es primo o no.

En While, ponemos la condición de que a<i (i=2) y de que b=0, si una no se cumple, se acaba el bucle.

Si el número es primo, nunca se entre en if, por lo que b siempre vale cero y llegamos a que a=i, entonces nos salimos del while, y devolvemos el resultado.

Si resulta que dicho número (a) no es primo, entonces se ejecuta if y encuentra otro número por el que es divisible. Entonces ponemos b=1, nos salimos del while y devolvemos el resultado.

Espero que te haya servido.

Un saludo.

4. olemew - 9 / junio / 2008

Llegue aqui buscando en google un codigo sencillito y eficaz, y me ha servido de ayuda. muchas gracias!! dos posibles recomendaciones:

Poner el 0=no, 1=si (llega con cambiar el res en ambos sitios) por aquello de 0 falso 1 verdadero.

Poner la primera condicion del while como i<(a/2), pues si tiene algun divisor exacto aparece antes de su mitad! No se me ocurrio a mi solo, me lo dijo mi profesor de informatica que es muy quisquilloso con el tema de “optimizar” jaja.

saludos!

5. David - 8 / agosto / 2008

oye amigo gracias. El codigo en si, lo que hace es super sencillo pero la utilidad que tiene es enorme. Gracias por este tipo de aportes nos ayuda mucho a la hora de nuestros proyectos. Exitos

6. Andres Hernandez - 24 / septiembre / 2008

tendras por alli un ejmplo de como implementar el juego de domino en C? me gustaria tener una idea de como se resuelve el problemita… mil gracias.

Andres.

7. Manuel - 27 / septiembre / 2008

hola soy principiante en programacion,, alguien me podia pasar,

un codigo para numeros pares, numeros impares , numeros primos, factorial, y fibonacci, utilisando cliclo fro, While, y Do_While.

escribanlos aki porfavor o si no mandamelos a mi correo
cacoma5986@hotmail.com Grasias y espero pronto su ayuda

8. kanito - 31 / octubre / 2008

mm hola alguien puede poner el mismo codigo de manera recursiva ?

9. Leandro - 31 / octubre / 2008

El codigo es incorrecto porq retorna el 0 y el 1 como primos y no lo son!!

10. Tomás Riquelme - 1 / abril / 2009

Muchas gracias, quizás lo puedo usar como torpedo para la prueba.

11. darkchicles - 16 / abril / 2009

if(x%2!=0)

Pato - 23 / septiembre / 2011

Es la condición que da el resto de la división, acá te la explico:

12. Josue - 26 / agosto / 2009

Hola me podrian ayudaras a resolver el siguiente problema que dice:
Una empresa automotriz necesita manejar los montos de ventas de N sucursales, a los largo de los ultimos 14 años. Diseñe una solucion que calcule lo siguiente:
a) Sucursal que mas ha vendido en cada año
b) Promedio de ventas por año
c) Año con mayor promedio de ventas
d) Ventas totales de la empresa (considerando las N sucursales durante los 14 años)

13. josue moises - 30 / agosto / 2009

Hola me podrian ayudaras a resolver el siguiente problema que dice:
Una empresa automotriz necesita manejar los montos de ventas de N sucursales, a los largo de los ultimos 14 años. Diseñe una solucion que calcule lo siguiente:
a) Sucursal que mas ha vendido en cada año
b) Promedio de ventas por año
c) Año con mayor promedio de ventas
d) Ventas totales de la empresa (considerando las N sucursales durante los 14 años)

14. Fabian.- - 27 / octubre / 2009

Leandro aweonao!
si devuelve 0 o 1 significa si son o no primos

15. Luis andres - 8 / noviembre / 2010

dice mi amigo que este codigo no nos vale…, no se que de un diagrama de flujo distinto y eso… gracias de todas formas.
Un cordial abrazo: Luis Andres

16. Laura - 15 / noviembre / 2010

De hechho pueden correr hasta la raiz de a por que los divisores estan antes de este y asi se optimiza mas

17. anonimo - 2 / diciembre / 2010

la neta ese codigo esta mal echo,,,jeje

18. viviana - 26 / abril / 2011

pzzzzz siii heeeee iop 100pre olvido sto y la neta aveses me cuesta recordarlo…..a mi si me sirvio a full

19. Gustavo Pedreros (@pedrexh21) - 25 / junio / 2012

Gracias, lo modifique un poquito, me daba flojera pensarlo desde el inicio ejejejeje. Te dejo la modificación:

int esPrimo(int numero){
int result = 0;//Es primo
int div = 2;
while(div < numero){
if (numero % div == 0){
result = 1;//No es primo
break;
}
div++;
}
return result;
}

20. Juan Luis Olguin Lopez - 9 / octubre / 2012

Muy bueno, muchisimas gracias

21. freishner - 1 / noviembre / 2012

puedes incluir stdbool.h creo que era para usar valores boleanos en c en vez de tener variables con esas tareas…saludos

22. sel - 29 / noviembre / 2012

Hola me podrian ayudaras a resolver el siguiente problema que dice:
Una empresa automotriz necesita manejar los montos de ventas de N sucursales, a los largo de los ultimos 14 años. Diseñe una solucion que calcule lo siguiente:
a) Sucursal que mas ha vendido en cada año
b) Promedio de ventas por año
c) Año con mayor promedio de ventas
d) Ventas totales de la empresa (considerando las N sucursales durante los 14 años)

23. Maria Perez - 12 / junio / 2014

oye, esto es nada mas con condicion cierto? se pone este codigo en el Borland c++ y es totalmente efectivo?

24. oswaldo - 20 / julio / 2014

hola necesito que un programa me muestre en pantalla los numeros primos y los no primos utilizando while y do while unicamente se los agradeceria. solo encuentro con el for y no es lo que necesito


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: