Divmod

Divmod

Die diskrete Exponentialfunktion (Synonyme Bezeichnungen sind modulare Exponentiation oder modulares Potenzieren)

b^x\ mod\ m

liefert den Rest bei Division von bx durch m. Die Umkehrung der diskreten Exponentialfunktion heißt diskreter Logarithmus.

Die diskrete Exponentialfunktion ist auch für große Exponenten effizient berechenbar. Für die Umkehrung, also die Berechnung des Exponenten x, bei gegebener Basis b, Modul m und gewünschtem Ergebnis, ist allerdings bis heute kein schneller Algorithmus bekannt. Die diskrete Exponentialfunktion wird daher als Einwegfunktion in asymmetrischen Kryptosystemen verwendet.

Zur Berechnung der diskreten Exponentialfunktion kann man folgenden Algorithmus verwenden:

function expmod(b,x,m : integer) : integer;
   /* 
    Berechnet die diskrete Exponentialfunktion b hoch x modulo m
    unter ausschließlicher Verwendung der Operationen Quadrieren
    und Multiplizieren. Der Rest wird nach jeder Operation bestimmt, 
    um große Zwischenergebnisse zu vermeiden 
    mod bezeichnet die Modulo-Operation
    div bezeichnet die ganzzahlige Division
   */
   Quad := b
   Halb := x
   Erg := 1
   while Halb > 0
      if Halb mod 2 > 0 then 
         Erg := (Erg * Quad) mod m
      endif
      Quad = (Quad * Quad) mod m 
      Halb = Halb div 2
   end while
   return Erg
end;

Der Algorithmus in C:

int mod_exp(int b, int x, int m)
{
	int erg = 1;
	while ( x > 0 ) 
	{
		if ( x & 1 ) { erg = ( erg * b ) % m; }
		b = ( b * b ) % m;
		x = x >> 1;
	}
	return erg;
}

Das Verfahren benötigt höchstens 2 * log2(x) Multiplikationen modulo m. Es beruht auf der gleichen Idee (fortgesetztes Quadrieren und Multiplizieren), wie das unter Russische Bauernmultiplikation beschriebene Verfahren zur schnellen Potenzierung.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Nevow — Developer(s) Divmod Stable release 0.10.0 / November 25, 2009; 23 months ago (2009 11 25) Written in Python …   Wikipedia

  • Luhn algorithm — The Luhn algorithm or Luhn formula, also known as the modulus 10 or mod 10 algorithm, is a simple checksum formula used to validate a variety of identification numbers, such as credit card numbers, IMEI numbers, National Provider Identifier… …   Wikipedia

  • Binäre Exponentiation — Die binäre Exponentiation (auch Square Multiply genannt) ist eine effiziente Methode zur Berechnung von natürlichen Potenzen, also Ausdrücken der Form xk mit einer natürlichen Zahl k. Dieser Algorithmus wurde bereits um ca. 200 v. Chr. in Indien… …   Deutsch Wikipedia

  • PyPy — Infobox Software name = PyPy caption = developer = programming language = Python latest release version = 1.0 latest release date = March 27, 2007 operating system = Cross platform genre = Python interpreter and compiler toolchain license = MIT… …   Wikipedia

  • List of tools for static code analysis — This is a list of significant tools for static code analysis.Historical products* Lint the original static code analyzer of C code.Open source or Noncommercial products .NET (C#, VB.NET and all .NET compatible languages) *… …   Wikipedia

  • Negative base — Numeral systems by culture Hindu Arabic numerals Western Arabic Eastern Arabic Indian family Tamil Burmese Khmer Lao Mongolian Thai East Asian numerals Chinese Japanese Suzhou Korean Vietnamese …   Wikipedia

  • Grundrechenarten — Nach dem Zählen sind die vier Grundrechenarten der nächste Schritt zum Erlernen des Rechnens. Sie werden als Grundlage für die weitere mathematische Laufbahn in der Grundschule gelehrt. Die Grundrechenarten bestehen aus folgenden einfachen… …   Deutsch Wikipedia

  • PyPy — Saltar a navegación, búsqueda PyPy Desarrollador Proyecto PyPy Sitio Oficial …   Wikipedia Español

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”