Anonymous user
Cipolla's algorithm: Difference between revisions
→{{header|Sage}}
(added FreeBASIC) |
|||
Line 642:
=={{header|Sage}}==
{{works with|Sage|7.
<lang sage>
def
return -1 if
print ("❌ %d is not a prime" % p)▼
def cipollaMult(x1, y1, x2, y2, u, p):
return ((x1*x2 + y1*y2*u) % p), ((x1*y2 + x2*y1) % p)
def cipollaAlgorithm(a, p, t):
if not is_prime(p):
return False
if
print
return False
for a in range (2,n) :▼
a =
out =
while (eulerCriterion(u, p) == 1):
return r, p-r▼
t = randrange(2, p)
u = pow(t**2 - a, 1, p)
x0, y0 = t, 1
x, y = t, 1
x, y = cipollaMult(x, y, x0, y0, u, p)
if x not in out:
out.append(x)
</lang>
{{out}}
<pre>
sage:
sage:
sage:
[135, 9872]
sage:
[144161, 855842]
sage:
❌ 8219 is not a
False
</pre>
|