|
@@ -31,13 +31,25 @@ def calculateLegendre(a, p):
|
|
-1
|
|
-1
|
|
>>> calculateLegendre(113, 41) # Beispiel aus dem Skript, S. 114
|
|
>>> calculateLegendre(113, 41) # Beispiel aus dem Skript, S. 114
|
|
1
|
|
1
|
|
|
|
+ >>> calculateLegendre(2, 31)
|
|
|
|
+ 1
|
|
|
|
+ >>> calculateLegendre(5, 31)
|
|
|
|
+ 1
|
|
|
|
+ >>> calculateLegendre(150, 1009) # http://math.stackexchange.com/q/221223/6876
|
|
|
|
+ 1
|
|
|
|
+ >>> calculateLegendre(25, 1009) # http://math.stackexchange.com/q/221223/6876
|
|
|
|
+ 1
|
|
|
|
+ >>> calculateLegendre(2, 1009) # http://math.stackexchange.com/q/221223/6876
|
|
|
|
+ 1
|
|
|
|
+ >>> calculateLegendre(3, 1009) # http://math.stackexchange.com/q/221223/6876
|
|
|
|
+ 1
|
|
"""
|
|
"""
|
|
if a >= p or a < 0:
|
|
if a >= p or a < 0:
|
|
return calculateLegendre(a % p, p)
|
|
return calculateLegendre(a % p, p)
|
|
elif a == 0 or a == 1:
|
|
elif a == 0 or a == 1:
|
|
return a
|
|
return a
|
|
elif a == 2:
|
|
elif a == 2:
|
|
- if a%8 == 1 or a%8 == 7:
|
|
|
|
|
|
+ if p%8 == 1 or p%8 == 7:
|
|
return 1
|
|
return 1
|
|
else:
|
|
else:
|
|
return -1
|
|
return -1
|
|
@@ -53,7 +65,7 @@ def calculateLegendre(a, p):
|
|
product *= calculateLegendre(pi, p)
|
|
product *= calculateLegendre(pi, p)
|
|
return product
|
|
return product
|
|
else:
|
|
else:
|
|
- if ((p-1)/2)%2==0:
|
|
|
|
|
|
+ if ((p-1)/2)%2==0 or ((a-1)/2)%2==0:
|
|
return calculateLegendre(p, a)
|
|
return calculateLegendre(p, a)
|
|
else:
|
|
else:
|
|
return (-1)*calculateLegendre(p, a)
|
|
return (-1)*calculateLegendre(p, a)
|