<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Barrett-Verfahren</id>
	<title>Barrett-Verfahren - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Barrett-Verfahren"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Barrett-Verfahren&amp;action=history"/>
	<updated>2026-06-07T22:09:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Barrett-Verfahren&amp;diff=2501456&amp;oldid=prev</id>
		<title>imported&gt;UncleOwen: Leerzeichen in Links entfern</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Barrett-Verfahren&amp;diff=2501456&amp;oldid=prev"/>
		<updated>2026-01-01T17:39:54Z</updated>

		<summary type="html">&lt;p&gt;Leerzeichen in Links entfern&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Barrett-Verfahren&amp;#039;&amp;#039;&amp;#039; ist ein Algorithmus zur effizienten Division großer Zahlen. Als Eingabe sind ganze Zahlen der Länge &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;n \le m\le 2n&amp;lt;/math&amp;gt; erlaubt. Der Algorithmus funktioniert in jedem [[Stellenwertsystem | Zahlensystem]]; auf dem Rechner empfiehlt sich eine Zweierpotenz wie &amp;lt;math&amp;gt;2^{32}&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;2^{64}&amp;lt;/math&amp;gt; als Grundzahl.&lt;br /&gt;
Zurückgeliefert wird außer dem [[Quotient | Quotienten]] auch der [[Division mit Rest | Rest]].&lt;br /&gt;
&lt;br /&gt;
Das Barrett-Verfahren lohnt sich erst ab ca. 1,5 Millionen Dezimalstellen; darunter ist das [[Burnikel-Ziegler-Verfahren]] schneller. Bei genügend vielen Divisionen durch die gleiche Zahl ist das Barrett-Verfahren allerdings im Vorteil, da der Reziprokwert wiederverwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Division zweier Zahlen &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; mit dem Barrett-Algorithmus läuft in drei Schritten ab. Im ersten Schritt wird mittels des [[Newton-Verfahren]]s eine Näherung von &amp;lt;math&amp;gt;\tfrac{2^m}{b}&amp;lt;/math&amp;gt; berechnet (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; ist die Länge von &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;), wobei nur Multiplikationen, Additionen und Subtraktionen benötigt werden.&lt;br /&gt;
Im zweiten Schritt wird der Näherungswert mit &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; multipliziert, wodurch man eine Näherung von &amp;lt;math&amp;gt;\tfrac{2^m \cdot a}{b}&amp;lt;/math&amp;gt; erhält. Schließlich wird aus der Näherung der genaue Wert berechnet, wobei &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt; Schritte genügen.&lt;br /&gt;
&lt;br /&gt;
== Erweiterung auf beliebige ganze Zahlen ==&lt;br /&gt;
Erfüllen die Ausgangswerte &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; die Bedingung &amp;lt;math&amp;gt;n \le m\le 2n&amp;lt;/math&amp;gt; nicht (d.&amp;amp;nbsp;h. ist &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; mehr als doppelt so lang wie &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;), so teilt man &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; in Abschnitte der Länge &amp;lt;math&amp;gt;\le n&amp;lt;/math&amp;gt; auf und behandelt jeden Abschnitt als eine Ziffer. Man dividiert dann die Zahl &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; nach der Schulmethode durch &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, wobei die einzelnen „Ziffern“ mit dem Barrett-Verfahren dividiert werden. Dies lässt sich effizient durchführen, weil man den (binär verschobenen) Reziprokwert &amp;lt;math&amp;gt;\tfrac{2^m}{b}&amp;lt;/math&amp;gt; nur einmal berechnen muss und der Divisor &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; nur eine „Ziffer“ (der Länge &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) hat.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Der Barrett-Algorithmus kommt in [[GNU Multiple Precision Arithmetic Library | GMP]] zum Einsatz&amp;lt;ref&amp;gt;http://gmplib.org/manual/Block_002dWise-Barrett-Division.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://treskal.com/kalle/exjobb/original-report.pdf Vergleich von Barrett- und Burnikel-Ziegler-Verfahren; enthält eine Beschreibung des Barrett-Verfahrens auf S. 17 (englisch)] (PDF-Datei; 565&amp;amp;nbsp;kB)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;br /&gt;
[[Kategorie:Division (Mathematik)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;UncleOwen</name></author>
	</entry>
</feed>