jump to navigation

Números primos en Java Noviembre 26, 2006

Publicado por lineadecodigo en : Java , trackback

Un número primo es aquel número que solo es divisible por si mismo y por la unidad. Por convención se asume que el número 1 es también primo. Así, los veinte primeros números primos son: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67 y 71.

Veámos como podemos implementar un algoritmo en Java que nos permita saber si dado un número, saber si este es un número primo o no.

Lo primero que haremos será definir una función que reciba un entero como parámetro (que será el número a conocer) y devolverá un booleano indicando si el número es primo o no.

public boolean esPrimo(int numero) { ... }

Lo que vamos a hacer es recorrer todos los números entre el 2 y el número sobre el que queremos saber si es primo o no. Dentro del bucle comprobaremos el principio del número primo. "Divisible por si mismo y la unidad". Es decir, que si encontramos un número que es divisible por el número evaluado, este dejará de ser primo.

Por ejemplo, el número 10 no es primo. Ya que 10 es divisible por 2 y 5. Esto, expresado en terminos matemáticos vendría a decir, que el resto entre los dos números es 0. Veámoslo:

10/2 = 5, resto 0
10/5 = 2, resto 0

La función que nos ayuda a conocer el resto entre dos números es el modulo. Y en Java se representa con el tanto por ciento. Así:

10%2 = 0
10%5 = 0
10%3 = 1 (Ya que 10/3 = 3 y  el resto es 1)

Por lo tanto, dentro del bucle comprobamos el módulo del número a evaluar con el del contador. Si el módulo es distinto de 0 cambiaremos una variable semáforo a false. Esta variable indicará que el número evaludado ya no es primo y nos servirá para salir del bucle.

Veámos el código:

int contador = 2;
boolean primo=true;

while ((primo) && (contador!=numero)){
  if (numero % contador == 0)
    primo = false;
  contador++;
}

Al ver este código podemos ver que con la variable de contro asumimos que el número a evaluar es primo. Esta variable será la que devolvamos como retorno de la función:

return primo;

Otra cosa interesante es que para evaluar los números que hay entre el 2 y el número sobre el que queremos saber si es primo podemos hacerlo de dos formas:

  1. Ir desde el 2 a el número. De forma ascendente.
  2. Ir del número a el 2. De forma descendente.

Cabe señalar que en este caso es mejor el primer punto, ya que encontraremos un divisor antes yendo de los números pequeños a los grandes. Por consiguiente evitaremos ciclos de procesamiento y la respuesta será más rápida.

El código sería el siguiente:

public static boolean esPrimo(int numero){
  int contador = 2;<
  boolean primo=true;
  while ((primo) && (contador!=numero)){
    if (numero % contador == 0)
      primo = false;
    contador++;
  }
  return primo;
}

Estos algoritmos son de un gran coste computacional, sobre todo si se quiere hacer sobre números muy grandes. Por ejemplo, el algoritmo de seguridad RSA basa el calculo de la clave publica en la multiplicación de dos números primos mayores de 10100. Característica que lo hace ser seguro.

Esta claro que nuestro código no es que sea un código para pruebas computacionales CPU intensivas. Pero alguna mejora podemos tener en nuestro código. Y es que una de las características de los números primos es que nunca tendremos un número primo que sea par. Eso quiere decir que si el número a evaluar es par, directamente lo podemos descartar, por lo cual recuperaremos ciclos computacionales.

Para saber si un número es par podemos utilizar la función del módulo. Y es que si el número dividido entre 2 da un resto de 0, entonces este número es par.

A nuestro anterior código le añadiremos la siguiente línea de código:

if (numero%2==0)
  return false;

| Print This Post/Page | 36959 visitas

6 Votes | Average: 4.33 out of 56 Votes | Average: 4.33 out of 56 Votes | Average: 4.33 out of 56 Votes | Average: 4.33 out of 56 Votes | Average: 4.33 out of 5 (6 votos, media: 4.33 de 5)
Loading ... Loading ...

Comentarios»

1. arianna - Enero 27, 2007

como realizar un algoritmo de los numeros primos en c#

2. Roberta Triviña - Febrero 25, 2007

Calcular un numero primo

3. Martha Alvarez - Marzo 31, 2007

cuando un numero es divisible por siete y por once.

4. anyela - Abril 9, 2007

por favor algoritmo que dado un numero primo me calcule el primo siguiente inmediato

5. cia - Abril 17, 2007

hola ayuda urgente nesecito aprender codigo en c++ porfavor!!!

6. Orieta - Abril 22, 2007

me gustaria saber como podria hacer numeros primos ,capicua y perfectos y ala vez convertir estos en letras en romanos ,invertido y factorial y tambien presentarlo en forma ascendente y descendente pero me pidireon en netbeans ,me gustaria q me ayudes por favor o almenso indicarme como mas menos lo podria hacer graxias .

7. Orieta - Abril 22, 2007

me gustaria hacerlo pero en netbeans o en jbuilder ok graxias

8. ORLANDO - Abril 26, 2007

QUIERO HACER UN PROGRAMA CON PASCAL QUE AL INGRESAR EL NUMERO ME DIGA DESDE EL 0 HASTA EL INGRESADO SI ES NUMERO PRIMO O NO

9. lis - Abril 28, 2007

hola quiero calcular cualquier numero natural y devolverlo con el mayor numero posible q se pueda formar con sus digitos

10. Jose - Mayo 3, 2007

// Listador de nros. primos entre 0 y 100 cont ndolos

#include
#include

void main(void)
{ int i,p,sen=0,tp=0;
float j,n;
for(i=0;i

11. Ricardo - Mayo 10, 2007

como se escribe “mod” en eclipse java

12. Shigo - Mayo 15, 2007

haber algun crack por ahi, yo recien estoy entrando a esto de los algoritmos eee, haber si alguien me ayuda a realizar un algo ritmo que me sace un numero capicua, la cuention es que introduzco un numero: 79 y me lo de la inversa 97 estoy dos numero se compara y se ve que no es capicua bueno despues de esto el 97 que es su inversa se lo suma con el primero numero que es 79:::::::::79+97=176 si esto no es capicua se lo suma con su inversa hasta llegar a un numero capicua

13. Dubán Hdo Mejía A - Mayo 17, 2007

el algoritmo funciona mucho mejor si el control “contador != numero” se hace “contador != numero/2+1″ por lo menos, ya que los numero de “numero/2″ hasta “numero” no sirven para validar si el numero es primo!!! porque sus divisiones están en el intervalo [1,2]

14. dublin jineth lopez - Mayo 22, 2007

como realizar un programa de un cemaforo con atributos y metodos

15. joel - Mayo 25, 2007

me gustaria saber como podria hacer en una serie calcular los numeros primos ,capicua y perfectos a la vez pero en nettbeans y en GUI(Frame) ,ayuda please .

16. ana - Junio 24, 2007

necesito un programa de numeros romanos en nethbeans me urge si alguien me puede ayudar a realizar este programa

17. Francisco Javier (UCV) - Julio 1, 2007

viejo es mucho mas eficiente que hagas el ciclo solamente hasta la raiz del numero que kieres saber si es primo, ya que hacia arriba de la raiz no vas a encontrar ningun divisor (en caso de ser primo) o en su defecto podrias encontrar divisor pero ya habras encontrado uno mas pequeño (osea ya habras encontrado que es divisible de igual forma) por lo tanto perderas muchas iteraciones

18. luis - Julio 6, 2007

hola necesito saber el algoritmo de convertir un numero natural a romano en lenguaje php

19. ANGEL - Julio 19, 2007

QUIERO HACER UN PROGRAMA QUE ME PERMITA INGRESAR TRES NUMEROS Y Y ME PRESENTE EN FORMA ASCENDENTE
EN C++

20. GEORGE - Julio 23, 2007

HOLA COMO ESTA SI QUIEREN PUEDEN CHATEAR EN MI CORREO Q ES JMDIAZCRUZ@HOTMAIL.COM

21. Iván - Agosto 27, 2007

Hola, buscaba un algoritmo que reciba n numeros, cuente los que son multiplos de 3,5,7,12.

22. Daniel - Agosto 28, 2007

HEY NECESITO UN ALGORITMO QUE CAMBIE NUMEROS ARABIGOS A ROMANOS

23. charismell - Septiembre 3, 2007

necesito un programa que me de los productos de tres numeros en c por favor

24. martha - Septiembre 5, 2007

nescesito saber el numero 11300 en romano

25. Isabel Jovel - Septiembre 8, 2007

No recuerdo mucho de los numeros romanos. Me gustaria recordarlos. Les agradesco si me pueden ayudar.
Gracias

26. axel - Septiembre 11, 2007

¡hola! nesesito su que me ayuden si! porfa como realisar el numero

divisible de….. —20–entre
14

27. axel - Septiembre 11, 2007

¡hola! nesesito que me ayuden si! porfa como realisar el numero

divisible de….. 20entre

14

28. percy - Septiembre 14, 2007

hola nececito que me ayuden con un programa en java para n numeros pa ra numeros primos

29. Williams - Septiembre 17, 2007

Hola como andan..me gustaria si alguien me puede ayudar ..en java, tengo haceer un programa q me diga la cantidad de numeros capicuas que exitan de 5 cifras q los cuente y los muestre…
:S

30. lineadecodigo - Septiembre 18, 2007

@Ricardo
El mod se escribe con el símbolo del tanto por ciento (%)

31. lineadecodigo - Septiembre 18, 2007

@Ivan
He publicado un artículo que te ayudará con el tema de los múltiplos. Lo puedes leer en Multiplo de un número en Java

Espero que te sea de ayuda.

32. israel - Septiembre 23, 2007

necesito saber como se escribe 2007 en numeros romanos

33. Yelanezi - Septiembre 23, 2007

MMVII es 2007 en romano

34. Yelanezi - Septiembre 23, 2007

alguien esta por ahi?

35. Daniel C - Septiembre 27, 2007

Saludos cual es la lìnea de còdigo para encontar los 100 primeros numeros primos en c#???

36. APOLINAR CRUZ - Septiembre 28, 2007

HOLA QUISIERA QUE ALGUIEN ME AYUDARA REALIZAR UN PROGRAMA EN JAVA QUE NUESTRE EN PANTALLA LOS NUMEROS PRIMOS GRACIAS

37. Apolinar Cruz - Septiembre 28, 2007

urgente ayundenme a realizar programa que muestre en pantalla los numeros primos gracias

38. ivan - Octubre 3, 2007

como puedo calcular numeros primos, pido n por teclado y me regresa los numeros primos de 0 a n

39. liliana garcia - Octubre 7, 2007

hola a todos necesito un favor como hago para construir un programa que solicite al usuario n números enteros positivos y obtenga:

La cantidad y la suma de los números que son primos.
La cantidad y el producto de los números que no son primos

40. Berman Francis Gómez - Octubre 10, 2007

si alguien sabe como se convierte numeros dijitos en romanos le agradecería

41. harold - Octubre 28, 2007

Necesito saber como se hace un programa en java que calcule los primos relatinos de un Z, otro que saque el modulo se un Z.

42. Alonso - Octubre 29, 2007

como creo un algoritmo que descomponga un numero en numeros primos???????
si necesitan ayuda diganlo, soy estudiant de informatica

43. alexrr - Octubre 29, 2007

hola como creo un algoritmo que halle el numero de suerte de cada persona a partir de la fecha de nacimiento por ejm (29/01/2004)
2+9=11,0+1=1,2+0+0+4=6 y 11+1+6=18 y 1+8=9 entonces el numero de la suerte es 9

44. KEVIN - Noviembre 1, 2007

NECESITO UN CODIGO EN JAVA QUE CONVIERTA DE NUMEROS ENTEROS A NUMEROS ROMANOS

45. lourdes soledad - Noviembre 17, 2007

quiero sabes una funcion que aparte una fecha como:05/11/07 y devuelva :lunes,o5 de noviembre del 2007

46. Emilio - Noviembre 23, 2007

consulten la api e java y no molesten tanto quieren que le hagan sus tareas tambien

47. Richard - Noviembre 25, 2007

BUENO LA VERDAD ES INETERESANTE PERO ME GUSTARIA SABER COMO DIVIDIR TRES NUMEROS DE UNA MATRIZ DE TRES DIMENSIONES Y SABER SU RESIDUO COMO ADICIONAL AL RESULTADO DE LA DIVISION ? ………..Richard_17_53@hotmail.com

48. jose Enrique - Noviembre 26, 2007

hola me llamo jose y necesito un programa que cuente las cifras de un numero en java

49. juan jose - Noviembre 26, 2007

kiero ahorita un programa en php k realize la suma de los 20 ptimeros numeros primos

50. german - Enero 30, 2008

ee no mames esta bien pinche mal este codigo pasenme uno pro bien compas xfa es urgente

51. Caro - Enero 30, 2008

necesito ayuda sobre el codigo correcto de numeros primos en java… en especifico calcular numeros primos del 1 al 2500, como puedo hacerle? brecaloto@hotmail.com

52. Silvana - Febrero 6, 2008

hola me podria ayudar con el programa en java que permita Leer 10 números y verificar si son números primos (divisibles solo para 1 y para sí mismos). Además, presentar la suma de los números y calcular el mayor.por fa es urgente ayudeme que no se nada de programaciòn avisame a mi mail. Gracias

53. mel - Febrero 12, 2008

hola

54. mel - Febrero 12, 2008

Hola me pueden ayudar a hacer un programa que dado un mínimo entero mayor a 0 determina si es primo o no.Gracias

55. hector - Febrero 23, 2008

hola alguien me puede ayudar con un programa en java que de 3 numeros me determine el minimo comun denominador

56. DANIELA - Marzo 9, 2008

pa q xixa ponen una wea de titulo si despues no la van a cumpolir son terrile xatosssss

57. winkler - Marzo 10, 2008

BUENO LA VERDAD ES INETERESANTE PERO ME GUSTARIA SABER COMO DIVIDIR TRES NUMEROS DE UNA MATRIZ DE TRES DIMENSIONES Y SABER SU RESIDUO COMO ADICIONAL AL RESULTADO DE LA DIVISION ?

58. Samy - Marzo 10, 2008

COMO HAGO PARA DECIR UN SI UN NUMERO ES PRIMO O NO EN JAVA, ES DECIR, ¿CUÁL ES EL ALGORITMO?

59. Samy - Marzo 10, 2008

COMO HAGO PARA DECIR UN SI UN NUMERO ES PRIMO O NO EN JAVA, ES DECIR, ¿CUÁL ES EL ALGORITMO?

60. Luisa fernanda sierra - Marzo 10, 2008

Hola necesito urgente aprender java, excepciones en java.

61. arturo jimenez ortigoza - Marzo 11, 2008

hola vatos nesecito un programa .Dada una cantidad de numero entero mostrar su correspondiente en letra ,maximo tres dijitos
porfa si alguien se la pueda rifar,que haga el paro.lo espero va.

.

62. persy - Marzo 25, 2008

holo nesecito un codigo en cadenas para este problema en java
h
ho
hol
hola
hol
ho
h
a
al
alo
aloh
alo
al
a

63. felix - Abril 8, 2008

un programa q diga cual es el mayor numero de un arreglo de x posiciones, sumarle sus digitos y veifiar ,si el numero es primo o no.

64. Rita - Abril 10, 2008

Me podrian ayudar un programa que verifique si dos numeros son primos entre si …………

65. irene - Abril 14, 2008

hola necesito un programa que me de de salida el mayor y el menor de tres numeros usando funciones

66. juan - Abril 14, 2008

alguien me manda el algoritmo en java para que imprima los primeros 50 numeros primos. caberman_666@hot por si me lo pueden mandar lo esperare intentando hacerlo de antemano gracias

67. miguel ramos - Mayo 16, 2008

La programacion en java es, facil. En ocasiones solo hay que buscar informacion. estudiar o preguntarle a un maestro. listo sabes programar

68. cata - Mayo 16, 2008

hola esto es re chebere gueno les dejo mi correito porfa anotenme solo los chicos de 11 años gueno baybay catico1205@hotmail.com y gueno hay se los dejo

69. cata - Mayo 16, 2008

hola porfis anotenme solo chicos y necesito sber las caracteristicas de lo numeros romanos gueno byabaybaa

70. ALDOO - Mayo 23, 2008

aqui uno:

no necesita explicacion… es bueno :)

public boolean primo(int num)
{
boolean p;
int contador = 0;
int i = 1;
while(i <= num)
{
if (num % i == 0) contador++;
i++;
}

if (contador <= 2) p = true;
else p = false;

return p;
}
}

71. sergio - Mayo 27, 2008

como hago un programa de numeros primos cn la teoria de euler-fermat

72. eli - Mayo 28, 2008

hola necesito el codigo para convertir un numero romano a binario
en l programa jcreator

73. yuly - Mayo 28, 2008

necesito verificar un numero primo con lo 2 metodos de instancia

74. Roy - Junio 5, 2008

Que cree, la gente que hacemos tareas de programacion o que?
Muy bueno el codigo, sólo una optimizacion

… cuando el numero en efecto es primo, solo necesitas ir en contador como maximo hasta la raiz cuadrada, para saber los divisores, ejem. 9, como maximo su mayor divisor sera 3, en Java necesita una adpatacion (raiz cuadrada +1)

75. Ana Candelaria Bervis Perez - Junio 18, 2008

necesito un programa que dado como datos la fecha de nacimiento me de su numero de la suerte que le corresponde me urge!!!! gracias

76. roro - Junio 18, 2008

sou una mmm no ponga para escolar los 50 numeros primos no sean malos

77. roro - Junio 18, 2008

mierda cujudo inbecil puta tumama es unaputa mare

78. manuel - Junio 19, 2008

necesito un programa que me saque un factorial

79. jose f - Junio 28, 2008

hola necesito ayudaen algo sencillo q me realizen un algori tmo de un ejemplo de numeros primos y de numeros perfectos no importa q ejemplo sea ok seraq m ayudan porfa escribanme a mi correo porfa es este josef_vaz@hotmail.com

80. kio de gracia - Julio 15, 2008

y en C#

81. andrea - Julio 18, 2008

hola necesito saber como realizar un programa en java en la que me devuelva como respuesta si es un numero amigo o no

82. samuel - Julio 18, 2008

holas
muy buena ayuda gracias gracias a mi me sirvio de mucho :=D

83. Liz Judy francis martin - Agosto 18, 2008

me gustaria saber como utilizar las funciones en programacion en C++.ADIOS

JUDY

84. princess - Agosto 25, 2008

me gustaria que pusieran los numeroas romanos pero los primos y que haya mas informacion acerca de esto, ciao!!! :D :-)


Close
E-mail It