2010-01-03 8 views
6

Wie man zwei sehr große Zahlen größer als 32 Zeichen multipliziert, zum Beispiel Multiplikation von 100! mit 122! oder 22^122 mit 11^200 mit Hilfe von teile und herrsche, habe irgendein Körper Java-Code oder C# -Code?Schnelle Multiplikation sehr großer Ganzzahlen

+0

retagged mit relevanten Sprachen –

+0

Lesen Sie über Multiplikationsalgorithmen: http://en.wikipedia.org/wiki/Multiplication_algorithm – przemoc

+0

"Teilen und erobern" klingt wie homewor k. Bitte, falls zutreffend, erneut eingeben. –

Antwort

0

Ich habe selbst eine geschrieben, die Arrays verwendet, um genau das zu erreichen, nur zum Spaß. Ich glaube, dass Javas BigInteger-Klasse das Gleiche tut.

Here ist ein Beispiel in C#, das für Sie nützlich sein könnte.

3

Sie sollten wahrscheinlich java.math.BigInteger verwenden. Dies ermöglicht Darstellungen von ganzzahligen Werten, die deutlich über 2^32 oder sogar 2^64 liegen. BigInteger-Werte sind im Wesentlichen nur durch die Menge an Speicher begrenzt, die für das Programm verfügbar ist, d.h. ~ 4 GB auf einem 32-Bit-System und ziemlich viel verfügbarer physikalischer + virtueller Speicher für 64-Bit-Systeme.

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: Hier ist ein BigInteger factorial function wenn Sie benötigen ein

+0

ja, und für C# erwägen intX, http://www.codeplex.com/IntX/ –

+2

Beachten Sie, dass BigInteger einen naiven Multiplikationsalgorithmus verwendet, wenn man also eine SCHNELLE Multiplikation großer Zahlen benötigt, Man sollte eine Bibliothek von Drittanbietern verwenden, die Karatsuba oder einen anderen Subn2-Algorithmus verwendet. – Voo

Verwandte Themen