![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
![]() Que quede claro, Victor Luis, que no tengo nada personal contra ti, saludos.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
Holas Nelson y Casimiro...
Me disculpo ante el Foro Delphi y en especial ante ustedes... creo que me excedi un poco pero no es por el foro ni sus organizadores; pero hubo algunos comentarios que estaban fuera de lugar por otros miembros del foro, que manifestaban que publique el codigo sino no te creemos y eso va contra mi manera de ser y mi personalidad, no me conocen, espero un dia si.... ○ Se que es un Foro Delphi, el primer lenguaje que aprendi fue Basic en colegio, usando los Atari computer, despues de mucho tiempo todo era diferente y aprendi Pascal y de ahi Delphi con lo que hice varias aplicaciones. Luego consegui Visual Basic y medio me perdi; por lo que empece a usar VBA Excel para hacer programas para mi Laboratorio y despues copie elcodigo a Visual Basic, modifique algo y era casi lo mismo, lo que me resulto mas sencillo.... ◘ Pero sera un compromiso... Intensificare mis conocimientos en Delphi... como dice Nelson es un leguaje eficiente... eso tambien lei de Java pero medio voy por ahi... ○ Respecto a lo que dice Casimiro de compartir conocimientos y trucos y mas.... estoy de acuerdo; pero no solo mediante la publicacion de codigo fuente. Si vieron, les comparti el metodo que para mi es simplicado y mejor que Eratostenes, les indique como depurar los multiplos de la secuencia extraida con las sumas +2 +4 y que los multiplos para mi estan en grupos de 2 multiplos, estos saltos o posiciones son propias para los multiplos de cada numero primo y se repiten. ◘ Con esto Casimiro creo estar aportando al foro y al tema en cuestion del Problema al Generar Numeros Primos, el tiempo del proceso se reducira significativamente y podra hacer busquedas de numeros mas grandes... La cosa esta en que quieren el codigo fuente y por ahora no lo tengo en Delphi, pues es un metodo que lo deje de usar porque encontre otros 3 metodos mejores y el 4º fue el que uso ahora... ○ Pero si tienen alguna duda al respecto... estoy predispuesto a brindar mi colaboracion como lo hace mi amigo Nelson... ○ Sobre el ultimo comentario de Nelson dire que lo se amigo... Gracias por recordarmelo, no soy matematico y mis conocimientos de programacion son del promedio medio o regular y es esto lo que me motiva a seguir adelante. ◘ Un dia publicare mi metodo, luego de ajustar el 2º dato que me falta al pasar el cuatrillon, veran que es verificable y repetible, lo que si no creo poder exponer una formula como los que hay, que no los entiendo; pero estoy seguro que en base a esta logica surgiran formulas e ideas que mejoren la busqueda de numeros primos... al menos esa es mi espectativa. Por ahora no puedo hacerlo presentar un metodo que esta desarrollado hasta el 95%, soy prudente en ello pues como bien dice Nelson "el mundo académico es ciertamente muy exigente en este sentido" ◘ Bueno amigos me ausentare un tiempo breve por asuntos de trabajo y no les molestare con mis tonterias... espero les vaya bien en el desarrollo del metodo... NOTA. (para Nelson) Mi hermano Nelson Arteaga que actualmente radica en Puno-Peru tiene acceso a mi equipo y todos mis apuntes de los analisis realizados. ○ Un favor, si sabes de donde puedo descargar un Manual de Delphi 7 en español, te lo agradeceria.... |
|
#3
|
|||||
|
|||||
|
Victor Luis,
Cita:
Revisa estos Tutorials de Delphi: Cita:
Cita:
Cita:
Cita:
Suerte ![]() Espero sea útil ![]() Nelson. Última edición por Casimiro Noteví fecha: 16-10-2013 a las 09:51:30. |
|
#4
|
|||
|
|||
|
Holas Nelson...
Gracias, ya estoy revisando los enlaces o links que adjuntaste... Antes de publicar el codigo y no lluevan criticas, me gustaria enviartelo a tu correo y le des una chekeada o mirada.... OK |
|
#5
|
||||
|
||||
|
Club Delphi,
Los siguientes programas son un Compendio de Cribas de Generación de Números Primos implementadas en Delphi: Criba de Eratóstenes: Criba de Atkin: Criba de Sundaram: Todas las anteriores implementaciones permite calcular con el Número 2.147.483.615 como cota límite, un máximo de 105.097.563 Números Primos en tiempos variables, sobre una máquina con un Procesador Phenom II X6 1090T, 4 GB RAM, 3 TB HDD y Windows 7 Profesional x32, como se muestra en la siguiente imagen a continuación: ![]() El tiempo indicado en la imagen para los diferentes algoritmos es el tiempo total de proceso desde que inicia el cálculo hasta que finaliza la generación del archivo de 1.12 GB con los 105.097.563 Números Primos, lo cual implica que la verificación de los números primos: se hace en un tiempo menor al indicado. Espero sea útil ![]() Nelson. Última edición por nlsgarcia fecha: 21-10-2013 a las 22:47:54. |
|
#6
|
|||
|
|||
|
Holas Nelson...
La busqueda con el algoritmo de la criba de Eratostenes veo que es muy rapido... 2 minutos 25 segundos es un buen tiempo para un rango de poco mas de 2.000 millones... ○ Mi metodo PRI-BASE lo haria en 41 minutos, aunque ya encontre la forma de archivarlos en la mitad del tiempo que lo hacia, pero como dices el tiempo de busqueda es mas corto y lo que demora es archivar millones de numeros primos. ○ Una consulta al respecto, este tiempo es constante en cada busqueda del limite de 2.147.483.615 y por qué usan esta cantidad y no un limite entero... como 2.000 o 5.000 millones ? Pregunto porque como indique el tiempo de mi metodo es constante, se cuando terminara no importa si busco en numeros grandes de mas de 18 o 24 digitos... ◘ Queria comentarte que intente poner el codigo en Delphi y he avanzado poco, creo que profundice mas VB, no encuentro las funciones compatibles como: Erase para inicializar un array, los Exponentes como 10^6, redondear hasta ciertos decimales y la funcion Format para dar formato a los numeros con puntos de mil o con decimales y me surge la duda si podre abrir los archivos de primos como otros con los Types que declare en Delphi, caso contrario tendria que iniciar desde 0 la busqueda y lo que queria es comparar los tiempos de las busquedas actuales... ◘ Por otro lado estoy analizando un metodo de Factorizacion para evaluar si un numero grande es primo o no, es una idea que me surgio y si resulta podria implementarlo al programa y ver que depure mayor cantidad de numeros grandes en menor tiempo. Bueno amigo, para finalizar te dire que pronto tendre mi equipo actualizado con mas GB en el disco, mayor RAM y procesador, con lo que espero realizar busquedas con rangos mas grandes y reducir el tiempo del proceso.... Suerte y Gracias por la informacion que compartes.... |
|
#7
|
||||
|
||||
|
Victor Luis,
Cita:
Cita:
Cita:
1- El tiempo de generación de números primos nunca es constante en ningún algoritmo, varia en función de la carga del computador a nivel de recursos, pero en general se mantiene con pocas variaciones. El limite de 2.147.483.615 esta fijado en función de la clase TBits, la cual tiene como tamaño máximo dicho límite, algo similar ocurre con los arrays en Delphi y C#. 2- En lo referente a las funciones equivalentes entre VB6 y Delphi 7 te sugiero revisar este link: Cita:
Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Numerics;
using System.Security.Cryptography;
using System.Windows.Forms;
namespace MillerRabin
{
class Program
{
static bool IsProbablePrime(BigInteger source)
{
int certainty = 10;
if (source == 2 || source == 3)
return true;
if (source < 2 || source % 2 == 0)
return false;
BigInteger d = source - 1;
int s = 0;
while (d % 2 == 0)
{
d /= 2;
s += 1;
}
RandomNumberGenerator rng = RandomNumberGenerator.Create();
byte[] bytes = new byte[source.ToByteArray().LongLength];
BigInteger a;
for (int i = 0; i < certainty; i++)
{
do
{
rng.GetBytes(bytes);
a = new BigInteger(bytes);
}
while (a < 2 || a >= source - 2);
BigInteger x = BigInteger.ModPow(a, d, source);
if (x == 1 || x == source - 1)
continue;
for (int r = 1; r < s; r++)
{
x = BigInteger.ModPow(x, 2, source);
if (x == 1)
return false;
if (x == source - 1)
break;
}
if (x != source - 1)
return false;
}
return true;
}
static void Main(string[] args)
{
BigInteger Number;
String AuxNumber;
do
{
AuxNumber = Microsoft.VisualBasic.Interaction.InputBox("Número a Verificar Primalidad",
"Test de Primalidad MillerRabin", "");
BigInteger.TryParse(AuxNumber, out Number);
if (IsProbablePrime(Number))
MessageBox.Show("Es un Número Primo", "Test de Primalidad MillerRabin",
MessageBoxButtons.OK, MessageBoxIcon.Information);
else if (AuxNumber != "")
MessageBox.Show("Es un Número Compuesto", "Test de Primalidad MillerRabin",
MessageBoxButtons.OK, MessageBoxIcon.Information);
} while (AuxNumber != "");
}
}
}
Pregunto: ¿Podrías explicar como manejas números enteros de 18 y 24 dígitos en VB6? Espero sea útil ![]() Nelson. Última edición por Casimiro Noteví fecha: 23-10-2013 a las 10:40:10. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| 11 millones de números primos | ixMike | La Taberna | 15 | 06-10-2013 00:00:37 |
| Suma de dígitos primos - Simplificar código | Subliminalz | Varios | 3 | 12-06-2013 00:00:22 |
| Ayuda con numeros primos | Jcn | Varios | 4 | 28-05-2013 01:39:20 |
| Como obtengo numeros primos ? | llSnakell | Varios | 13 | 05-10-2011 03:56:09 |
| Promedio.. digitos primos .. | luisito2011 | Varios | 3 | 07-05-2011 02:54:02 |
|