Sha256: d8e27f6964c74ead205ededcf08270a145276e6cdd828c6018ee5bdabfda4196
Contents?: true
Size: 599 Bytes
Versions: 176
Compression:
Stored size: 599 Bytes
Contents
import scala.annotation.tailrec // Algorithm from - http://fldit-www.cs.uni-dortmund.de/~peter/PS07/HR.pdf object PrimeFactors { def factors(n: Long): List[Long] = { assert(n >= 1, "Argument must be positive") @tailrec def primeAcc(n: Long, xs: List[Long]): List[Long] = { if (n == 1) xs else { val p = ld(n) primeAcc(n / p, p :: xs) } } primeAcc(n, List()).reverse } private def ld(n: Long) = ldf(2, n) @tailrec private def ldf(k: Long, n: Long): Long = if (n % k == 0) k else if (k * k > n) n else ldf(k + 1, n) }
Version data entries
176 entries across 176 versions & 1 rubygems