Cómo multiplicar dos números muy grandes de más de 32 caracteres, por ejemplo, la multiplicación de 100! con 122! o 22^122 con 11^200 con la ayuda de dividir y conquistar, ¿algún cuerpo tiene código Java o código C#?Multiplicación rápida de enteros muy grandes
Respuesta
Escribí uno que usa Arrays para lograr eso, solo por diversión. Creo que la clase BigInteger de Java hace lo mismo.
Here es un ejemplo en C# que podría ser útil para usted.
Here's some integer multiplication algorithms
Here's a class library for numbers
Incluye los algoritmos Karatsuba y Schonhage-Strassen para multiplicar números enteros grandes.
Probablemente deberías usar java.math.BigInteger. Esto permite representaciones de valores enteros muy por encima de 2^32 o incluso 2^64. Los valores de BigInteger están esencialmente limitados solo por la cantidad de memoria disponible para el programa, es decir ~ 4 GB en un sistema de 32 bits y prácticamente disponible memoria física + virutal para sistemas de 64 bits.
import java.math.BigInteger;
class Foo
{
public static void main(String args[])
{
BigInteger bigInteger100Fact = bigFactorial(BigInteger("100")); //where bigFactorial is a user-defined function to calculate a factorial
BigInteger bigIntegerBar = new BigInteger("12390347425734985347537986930458903458");
BigInteger product = bigIntegerFact.multiply(bigIntegerBar);
}
}
EDIT: He aquí un BigInteger factorial function si lo necesita
sí, y para C# considere intX, http://www.codeplex.com/IntX/ –
Solo tenga en cuenta que BigInteger está usando un algoritmo de multiplicación ingenuo, por lo que si necesita una multiplicación RÁPIDA de números grandes, uno debe usar una biblioteca de terceros que use Karatsuba u otro algoritmo sub n^2. – Voo
Here is a patched version de java.lang.BigInteger que utiliza Karatsuba y Toom-cocción:
And here is a Java class, capaces de multiplicar BigIntegers usando Schönhage-Strassen:
- 1. multiplicación de enteros rápida/rápida en ruby?
- 2. Entender el algoritmo de Schönhage-Strassen (multiplicación de enteros grandes)
- 3. Almacenamiento de enteros muy grandes en MySQL
- 4. C++ manejo de enteros muy grandes
- 5. Cálculo de números enteros muy grandes
- 6. Multiplicación eficiente de matrices muy grandes en MATLAB
- 7. enteros grandes con longitud fija
- 8. multiplicación rápida y sustracción módulo un primer
- 9. multiplicación de Fixnum más rápida en ruby?
- 10. Impresión BigIntegers muy grandes
- 11. Operaciones bit a bit con enteros grandes
- 12. Javascript sumando enteros grandes
- 13. enteros grandes en C#
- 14. ¿Cómo definimos enteros grandes?
- 15. grandes literales enteros negativos
- 16. Resharper con archivos grandes o * muy * grandes
- 17. Similitud de documento muy rápida
- 18. Cargas muy grandes con PHP
- 19. Cómo manejar enteros arbitrariamente grandes
- 20. enteros arbitrariamente grandes en C#
- 21. acelerar la "conversión base" para enteros grandes
- 22. CUDA Interrupciones de multiplicación de matrices para matrices grandes
- 23. multiplicación SSE de 4 enteros de 32 bits
- 24. En la multiplicación de enteros, desbordamiento y pérdida de información
- 25. ¿Cómo moverse o hacer que PHP json_decode no altere mis valores enteros muy grandes?
- 26. Almacenamiento de documentos muy grandes en MongoDB
- 27. Lectura de archivos muy grandes en PHP
- 28. Encontrar elementos comunes de dos matrices muy grandes
- 29. Manejo de enteros "grandes" en C#
- 30. Aritmética con enteros arbitrariamente grandes en PHP
regrabado con idiomas relevantes –
Lea acerca de los algoritmos de multiplicación: http://en.wikipedia.org/wiki/Multiplication_algorithm – przemoc
"divide y vencerás" suena como homewor k. Por favor vuelva a etiquetar si es correcto. –