Ich bin absoluter Beginner in Python. Will den Miller-Rabin-Test schreiben, aber irgendwie klappt es mit dem Modulo rechnen nicht. Für kleine Zahlen klappt es, bei großen jedoch nicht. Kurz was eigentlich passieren sollte. Man gibt ein zufälliges a ein und für p eine Primzahl. Ich lass mir ein Array ausgeben, welches als letzen Wert auf jeden Fall 1 haben sollte. Bei kleinen Zahlen klappt dies auch, jedoch bei größeren nicht. Deswegen meine Vermutung, dass Python nicht mit so großen Zahlen zurecht kommt, was mich eigentlich verwundern würde. Auch mit einem debugger komme ich nicht weiter. Wenn ich die Werte nicht per Python direkt (ohne langen Algorithmus), passt es wieder. Die spannende Zeile um die es geht ist 9:
Code: Alles auswählen
def MillerRabin(p,a):
reste=[]
k=0
x=p-1
while x % 2 == 0:
x=x/2
k=k+1
while k>-1:
rest=(a**x)%p
if rest == p-1:
rest=-1
reste.append(rest)
x=2*x
k=k-1
return reste
print(MillerRabin(13,6))
Jedoch bei 89=9 und 5=a klappt es nicht, hier stimmen nur die ersten beide Werte: [55.0, -1, 66.0, 39.0]
Ich hoffe, mein Problem ist klar geworden, und jemand kann mir weiterhelfen
Lg schoel27