Ir al contenido


Foto

Variable que guarde un número mayor de lo que puede LongInt...


  • Por favor identifícate para responder
21 respuestas en este tema

#21 Victor Luis

Victor Luis

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 17 junio 2014 - 03:43

Holas...

Supongo que despues de 3 años ya solucionaron su problema; pero como ustedes determino primos con facilidad.
Me quede hasta 15 digitos pues mi equipo es antiguo; pero haciendo algunos arreglos en Delphi 7 llegue hasta los 22 digitos, simplemente usando variables Extended que soportan hasta 19 digitos y luego para una division, digamos de 22 digitos, parto en 2 la cadena de texto del numero por lo que lo almaceno en variables Double o la misma; pero hay que tomar en cuenta el arreglo para obtener resultados exactos.

• El numero de 22 digitos se parte en 2, donde el primero de la izquierda tendra 15 digitos y el de la derecha los restantes 7 digitos.
Teniendo:

n1:= numero de 15 digitos
n2:= numero de 7 digitos
n3:= 10^7 ó 10000000

• Realizamos la division para obtener el residuo por ejemplo de n=10

nr1:= n1-(int(n1/n)*n);
n4:= (nr1*n3)+n2;
nr2:= n4-(int(n4/n)*n);
→ En nr2 obtenemos el residuo correcto de la division.

○ Otra manera que funciona en Visual Basic es completar con ceros al primer numero de la izquierda, osea los que le corresponderia al nuero separado de la derecha, teniendo: n1 y n2.
→Ahora se divide n1/n y el residuo se suma a n2 y se vuelve a sacar el residuo que seria el final.

○ Tambien puedes usar Funciones o Procedimientos, donde al enviarte una variable String con el numero en texto, realice las operaciones basicas de Suma, Resta, Multiplicacion, Division, Residuo y demas.

◘ Sobre los Numeros Primos, no es tanto como indica Sergio, eso de depurar o descartar los pares, multiplos de 3, 5, 7, etc...
• La Organizacion de los numeros primos, nos genera numeros de base con altas posibilidades de ser primos y si no con seguridad son pseudoprimos.
• Ahora si buscas primos por el metodo clasico, osea evaluando con primos verificados hasta su raiz cuadrada, te llevara un re monton de tiempo y ademas necesitas una base de primos para evaluar.
→Con los Primos Origen, desde la organizacion perfecta de los primos, no necesitas estas bases, estos primos origen te generan los n primos que necesitas, sin gasto de memoria operativa ni de disco.

saludos...
  • 0

#22 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 17 junio 2014 - 05:49

Veo que el hilo es viejo y ahora terminaste de procesar los números.  :tongue:
Para números enormes no te queda otra que salirte de los lenguajes de propósito general al igual que es inevitable [como lo afirma Sergio] que uses rutinas especiales para esto.
Te cuento que la mayoría de los números primos no son hallados por el método de la criba. Pero si es el único que piensas aplicar, deberías tener en cuenta lo siguiemte:
Como bien dijeron:
- Solo procesar números impares o mejor solo aquellos números que de seguro no serán primos al menos hasta 11.
- Solo procesar hasta la raíz cuadrada.
Y agrego una:
- Solo procesar los números divisores primos hasta la raíz del número en cuestión. Porque si un primo no lo divide uno compuesto de ese primo, tampoco. Eso sí, deberás guardar la lista de divisores en un vector.

Además, los números están ligados a la palabra del procesador. O sea que sin métodos numéricos, no llegarás lejos.
El lenguaje para las matemáticas es Fortran.

  • 0




IP.Board spam blocked by CleanTalk.