Seite 1 von 1

Funktion optimieren (Miller-Rabin-Primzahltest)

Verfasst: Samstag 4. November 2006, 13:29
von rico
Ich bin grad dabei den MIller-Rabin-Primzahltest in Python zu implementieren und dabei muss ich

Code: Alles auswählen

(a**u)%n
berechnen.
Allerdings werden die Werte ziemlich groß.

Bsp: n= 123456789 (zu prüfende Zahl)
a - zufällige Zahl zw. 2 und n
u = n-1

Ihr seht also, dass das Ganze ziemlich rechenintensiv ist.

Code: Alles auswählen

"""
Schnellerer Weg fuer:
	(a**u)%n
"""
def modular_exp(a,u,n):
	tmp=a
	for i in xrange(u-1):
		tmp = (tmp*a)%n
	return tmp
Dadurch spare ich wenigstens einige Minuten, das dauert aber immernoch sehr lange.

Verfasst: Samstag 4. November 2006, 14:14
von SigMA

Re: Funktion optimieren (Miller-Rabin-Primzahltest)

Verfasst: Samstag 4. November 2006, 15:26
von BlackJack
rico hat geschrieben:Ich bin grad dabei den MIller-Rabin-Primzahltest in Python zu implementieren und dabei muss ich

Code: Alles auswählen

(a**u)%n
berechnen.
Schau Dir mal die `pow()` Funktion an. Die nimmt auch noch ein drittes Argument.

Schneller geht's wahrscheinlich nur noch wenn Du den fertigen Miller-Rabin aus der GMP Bibliothek nimmst, für die es eine Python-Anbindung gibt: gmpy.