Tonelli-Shanks algorithm: Difference between revisions
Content deleted Content added
Thundergnat (talk | contribs) →{{header|Perl 6}}: Add Perl 6 |
m →{{header|Sidef}}: code simplifications |
||
Line 542: | Line 542: | ||
legendre(n, p) == 1 || die "not a square (mod p)" |
legendre(n, p) == 1 || die "not a square (mod p)" |
||
var q = p-1 |
var q = p-1 |
||
var s = |
var s = valuation(q, 2) |
||
⚫ | |||
while (q.is_even) { |
|||
⚫ | |||
q >>= 1 |
|||
s += 1 |
|||
} |
|||
if (s == 1) { |
|||
⚫ | |||
} |
|||
var c |
|||
for z in (2 ..^ p) { |
|||
⚫ | |||
c = powmod(z, q, p) |
|||
break |
|||
} |
|||
} |
|||
var r = powmod(n, (q + 1) >> 1, p) |
var r = powmod(n, (q + 1) >> 1, p) |
||
var t = powmod(n, q, p) |
var t = powmod(n, q, p) |