Category talk:Wren-math: Difference between revisions
Content added Content deleted
m (→Source code: Minor change.) |
(→Source code: Removed some private methods which are no longer used.) |
||
Line 308: | Line 308: | ||
} |
} |
||
return allPrimes |
return allPrimes |
||
} |
|||
// Private helper method which counts and returns how many primes there are |
|||
// up to and including 'n' using the Legendre method. |
|||
static phi_(n, a, primes) { |
|||
if (a <= 1) return (a < 1) ? n : n - (n >> 1) |
|||
var pa = primes[a-1] |
|||
if (n <= pa) return 1 |
|||
return phi_(n, a-1, primes) - phi_((n/pa).floor, a-1, primes) |
|||
} |
|||
// As above method but uses memoization. |
|||
static phi_(n, a, primes, cache) { |
|||
if (a <= 1) return (a < 1) ? n : n - (n >> 1) |
|||
var pa = primes[a-1] |
|||
if (n <= pa) return 1 |
|||
var key = Int.cantorPair(n, a) |
|||
if (cache.containsKey(key)) return cache[key] |
|||
return cache[key] = phi_(n, a-1, primes, cache) - phi_((n/pa).floor, a-1, primes, cache) |
|||
} |
} |
||