Category talk:Wren-math: Difference between revisions
Content added Content deleted
(→Source code: Added Math.dim method.) |
(→Source code: Int.isPrime now uses a larger wheel - about 25% quicker than before.) |
||
Line 319: | Line 319: | ||
static binomial(n, k) { multinomial(n, [k, n-k]) } |
static binomial(n, k) { multinomial(n, [k, n-k]) } |
||
// Determines whether 'n' is prime using a wheel with basis [2, 3]. |
// Determines whether 'n' is prime using a wheel with basis [2, 3, 5]. |
||
// Not accessing the wheel via a list improves performance by about 25%. |
|||
static isPrime(n) { |
static isPrime(n) { |
||
if (!n.isInteger || n < 2) return false |
if (!n.isInteger || n < 2) return false |
||
if (n%2 == 0) return n == 2 |
if (n%2 == 0) return n == 2 |
||
if (n%3 == 0) return n == 3 |
if (n%3 == 0) return n == 3 |
||
if (n%5 == 0) return n == 5 |
|||
var d = 7 |
|||
while (d*d <= n) { |
while (d*d <= n) { |
||
if (n%d == 0) return false |
|||
d = d + 4 |
|||
if (n%d == 0) return false |
if (n%d == 0) return false |
||
d = d + 2 |
d = d + 2 |
||
if (n%d == 0) return false |
if (n%d == 0) return false |
||
d = d + 4 |
d = d + 4 |
||
if (n%d == 0) return false |
|||
d = d + 2 |
|||
if (n%d == 0) return false |
|||
d = d + 4 |
|||
if (n%d == 0) return false |
|||
d = d + 6 |
|||
if (n%d == 0) return false |
|||
d = d + 2 |
|||
if (n%d == 0) return false |
|||
d = d + 6 |
|||
if (n%d == 0) return false |
|||
} |
} |
||
return true |
return true |