Página 1 de 1

numeros primos

NotaPublicado: Lun May 23, 2011 10:55 pm
por kerso4
Quisiera hacer una lista con 15 primeros numeros primos. Como he estado probando diferentes codigos tanto en OOo y en excel al final solo he conseguido que me corriera "una version" en Excel porque solo he encontrado en VBasic. Esta version me dice si el numero de la celda contigua es primo o no. Alguien con idea de Basic sabria "traducirlo".
Código: Seleccionar todo   Expandir vistaContraer vista
Function PRIMOS(x As Integer)
Dim i As Integer
dim x as integer
For i = 2 To x
If x Mod i = 0 Then
If x <> i Then
PRIMOS = "NO PRIMO"
Exit Function
Else
PRIMOS = "PRIMO"
Exit Function
End If
End If
Next i
End Function

Muchas gracias de antemano.
un saludo

Re: numeros primos

NotaPublicado: Lun May 23, 2011 11:53 pm
por fornelasa
Hola, de hecho el codigo es muy estandar, intenta por favor con esta macro función:

Function EsPrimo(x As Integer) As Boolean
Dim I As Integer
EsPrimo = FALSE
For I = 2 To x - 1
If x MOD I = 0 Then
Exit Function
End If
Next I
EsPrimo = TRUE
End Function


Saludos, Federico.

Rnumeros primos

NotaPublicado: Mar May 24, 2011 3:52 pm
por kerso4
No se que me pasara pero no me funciona la macro :S
Me compila pero no me sale si es primo o no, se me queda en blanco.
¿Hay mucha diferencia entre VBasi y Basic?
Consegui que me corriera el primero pero en Microsoft Word, pero es VBasic y OOo es Basic.
Ademas creo q estoy haciendo algo mal al crear, guardar y ejecutar la macro.
Muchas gracias

Re: numeros primos

NotaPublicado: Mar May 24, 2011 5:10 pm
por fornelasa
Hola, bueno, si, seguramente estamos haciendo algo mal por alla, considero que si funciona correctamente:

Imagen

Saludos.

Re: numeros primos

NotaPublicado: Mar May 24, 2011 9:37 pm
por kerso4
Un fallo que me sale es que me da que for es un argumento no opcional, me compila declarando la x otra vez. y Finalmente no hace lo que pretendo.
Imagen
Muchas gracias!!!

Re: numeros primos

NotaPublicado: Mar May 24, 2011 10:07 pm
por fornelasa
Hola,
Pues si esta raro, yo utilizo LibreOffice y si funciona.

Es obvio que el problema lo esta dando la variable "x" y nunca el "argumento" For ya que este no es un argumento. Una vez que ya nos marcó el error que mencionas, es necesario "salirse del programa" y volver a intentarlo de esta manera:

Si escribimos la formula de esta manera =EsPrimo(), es claro que marcará error ya que el argumento no es opcional, es decir, siempre debemos introducir la formula con el argumento x de esta manera =EsPrimo(A1), =EsPrimo(B1)........etcetera.

Es decir, como el argumento (la x) no es opcional necesariamente debemos introducirlo en la formula, otra forma correcta sería =EsPrimo(2) en donde en este caso la x es el numero 2, pero nunca podemos introducir la formula asi =EsPrimo() sin el argumento x

Si escribimos la formula asi =EsPrimo() es claro que el error se produce exactamente en el punto que indicas anteriormente.

Por favor ve mis imagenes y nota en una de ellas como esta la formula, =ESPRIMO(B1)

Sin embargo lo explicado anteriormente es tan obvio que no creo que por ahi lo estes haciendo mal.....¿o si?

En la imagen que subes no me dejas ver como estas introduciendo la funcion. Veamos estas dos imagenes:

Imagen

Y ahora esta forma correcta:

Imagen

Saludos.

Re: numeros primos

NotaPublicado: Vie Ago 23, 2013 4:28 pm
por Victor Luis
Holas...

Estaba leyendo sus mensajes y quisiera acotar con algunos consejos.

○ Para saber si un numero es primo, primero necesitan numeros primos de base para comparacion, donde se supone que inicialmente todo primo no es multiplo de 2 ni de 3, con lo que ya tenemos los 2 primeros primos.
○ Como el 4,6,8,10 son multiplos de 2 y el 6,9 de 3, facilmente tenemos 2 primos mas, el 5 y el 7. Basicamente con estos podemos encontrar los demas primos.

◘ Respecto a su codigo For I=2 To X-1 esto no es practico, no se compara si un numero es multiplo hasta X-1, sino hasta la mitad. Suponiendo que queremos saber si el 29 es primo, veremos si es divisible entre: 2,3,5,7 y 13 no tomar en cuenta el 17,19,23 ya que 17x2=34 se pasa, por eso comparen hasta la mitad del numero a investigar y ahorraran tiempo en su proceso.

○ Hay muchas maneras de buscar primos, sin usar formulas, si analizan un poco veran que hay una logica de secuencia lo que me permitio sacar hasta ahora los primos hasta el Trillon. Usando los factores de descomposicion un amigo saco primos hasta el millon en 51 segundos, observando la secuencia como les dije, realice mi codigo en VBA Excel y logre sacar los mismos en 42 segundos, luego vi otra manera y saque en 16 segundos, donde ahora lo genero en menos de 2 segundos.

○ Mi objetivo no es impresionar, sino darles la idea que funciona y lo he desarrollado, para que pasen de nivel y no se estanquen con ese codigo que publicaron, si desmerecer su funcionalidad...

○ Para concluir mi sugerencia les dire que mi primera aplicacion, del millon en 42 seg, en mi codigo no lleva ni una pregunta con If Then, tan solo unos For To Next y Select Case para terminar el bucle y saca primos hasta el millon, con esto creo que ya captaron la idea y desarrollen sus aplicaciones.... suerte.

☼ Aqui les dejo el link de los primos del 2 al millon por si les interesa...
http://www.4shared.com/office/W4ojXcvZ/ ... MILLO.html

Re: numeros primos

NotaPublicado: Vie Ago 23, 2013 6:18 pm
por fornelasa
Hola Víctor, estoy totalmente de acuerdo contigo, es claro que si le dedicamos el tiempo necesario a un programa tarde o temprano lo optimizaremos en tiempo de ejecución y en recursos del sistema.
Has dicho:
○ Mi objetivo no es impresionar, sino darles la idea que funciona y lo he desarrollado, para que pasen de nivel y no se estanquen con ese código que publicaron, si desmerecer su funcionalidad...

Por lo que se ve y sin mirar el link que muestras es claro que a este tema le has dedicado bastante tiempo, ok bien eso me parece correcto, pero parece que la parte olvidada en tu código que aun no veo ha sido la humildad.

Saludos, Federico.

Re: numeros primos

NotaPublicado: Sab Ago 24, 2013 9:17 am
por Victor Luis
Holas...

Disculpen a todos y tienes razon FORNELASAS, cunado quise adjuntar la lista de primos hasta el millon no me permitieron ya que ocupan 5.45 MB, por eso lo subi a 4shared para compartirlo por si alguien necesita esos primos.

○ Lo de la "humildad" me cae mal, la falsa acusacion de FORNELASAS no es para mi, soy todo lo contrario, ayudo desinteresadamente a quien me lo solicite y respecto al codigo, no lo publico porque me parece latoso tener que crear un proyecto y pegarlo en alguna parte y muchas veces cometemos errores de referencia y no funciona... Mejor les adjunto el proyecto para buscar numeros primos segun la explicacion que les di en el anterior mensaje.

Comentarios y consultas a su disposicion en...

☼ Suerte y otra vez disculpas...


Editado por el moderador (mauricio) para eliminar la dirección de correo, ya que la gente que quiera contactarte puede utilizar las herramientas propias del foro (como mensajes privados o incluso un e-mail). Además, a menos que tengas un apetito insaciable por spam, no es buena idea poner la dirección de e-mail en un foro público como este. Si no lo has hecho aún por favor lee la Guía de supervivencia

Re: numeros primos

NotaPublicado: Mar Ago 27, 2013 3:05 am
por Victor Luis
Como estan....

Con el programita que adjunte, pueden conseguir numeros primos grandes como la lista que adjunto, claro que si ponen directo como limite una cifra mayor la busqueda sera eterna o se producira un error.
○ Si ya lo revisaron, al terminar una busqueda pone en una columna los primos usados en la evaluacion. Modifiquen el codigo para que no inicie desde cero osea desde 11, sino que use los de las celdas en la columna y si le falta recien busca otros, asi en cada busqueda tendran mas primos logrando cada vez cifras mayores...


1 Billon: 1.000.000.000.000

1.000.000.000.039
1.000.000.000.061
1.000.000.000.063
1.000.000.000.091
1.000.000.000.121
1.000.000.000.163
1.000.000.000.169
1.000.000.000.177
1.000.000.000.189
1.000.000.000.193
1.000.000.000.211
1.000.000.000.271
1.000.000.000.303
1.000.000.000.331
1.000.000.000.333
1.000.000.000.339
1.000.000.000.459
1.000.000.000.471
1.000.000.000.537
1.000.000.000.543
1.000.000.000.547
1.000.000.000.561
1.000.000.000.609
1.000.000.000.661
1.000.000.000.669
1.000.000.000.721
1.000.000.000.751
1.000.000.000.787
1.000.000.000.789
1.000.000.000.799
1.000.000.000.841
1.000.000.000.903
1.000.000.000.921
1.000.000.000.931
1.000.000.000.933
1.000.000.000.949
1.000.000.000.997

Re: numeros primos

NotaPublicado: Mié Jul 12, 2017 7:16 pm
por shalirey
Muchas gracias por el aporte! coincidido totalmente, justo estaba buscando info sobre este tema.