Category talk:Wren-math: Difference between revisions

→‎Source code: Added a second 'divisors' method which is quicker for large numbers with a small number of prime factors.
m (→‎Source code: Added quotes to 'lang' attribute.)
(→‎Source code: Added a second 'divisors' method which is quicker for large numbers with a small number of prime factors.)
Line 416:
static properDivisors(n) {
var d = divisors(n)
var c = d.count
return (c <= 1) ? [] : d[0..-2]
}
 
// As 'divisors' method but uses a different algorithm.
// Better for large numbers with a small number of prime factors.
static divisors2(n) {
if (n <= 0) return []
var factors = Int.primeFactors(n)
var divs = [1]
for (p in factors) {
for (i in 0...divs.count) divs.add(divs[i]*p)
}
divs.sort()
var c = divs.count
if (c > 1) {
for (i in c-1..1) {
if (divs[i-1] == divs[i]) divs.removeAt(i)
}
}
return divs
}
 
// As 'properDivisors' but uses 'divisors2' method.
static properDivisors2(n) {
var d = divisors2(n)
var c = d.count
return (c <= 1) ? [] : d[0..-2]
9,476

edits