Miller–Rabin primality test: Difference between revisions

Content added Content deleted
(added FreeBASIC)
m (→‎{{header|Sidef}}: minor simplifications)
Line 3,828: Line 3,828:


=={{header|Sidef}}==
=={{header|Sidef}}==
<lang ruby>func is_prime(n { .is_odd && (_ > 2) }, k) {
<lang ruby>func is_prime(n, k) {

var s = 0
var d = n.dec
n == 2 && return true
(d >>= 1; ++s) while d.is_even
n <= 1 && return false
n %% 2 && return false

var d = n-1
var s = valuation(d, 2)
d >>= s


k.times {
k.times {
Line 3,840: Line 3,845:
(s-1).times {
(s-1).times {
x.expmod!(2, n)
x.expmod!(2, n)
return false if x.is_one
return false if x==1
break if (x == n-1)
break if (x == n-1)
}
}
Line 3,849: Line 3,854:
}
}


func is_prime((2), _k) { true }
say(^1000->grep {|n| is_prime(n, 10) }.join(', '))</lang>
func is_prime(_n, _k) { false }

say 1000.range.grep {|n| is_prime(n, 10) }.join(", ")</lang>


=={{header|Smalltalk}}==
=={{header|Smalltalk}}==