Permalink
Please sign in to comment.
| @@ -1,10 +1,7 @@ | ||
| -lazy val ps: Stream[Int] = 2 #:: Stream.from(3).filter(i => | ||
| - ps.takeWhile(j => j * j <= i).forall(i % _ > 0)) | ||
| +def factors(n: Long): List[Long] = | ||
| + (2 to math.sqrt(n).toInt).find(n % _ == 0) | ||
| + .map(i => i.toLong :: factors(n / i)).getOrElse(List(n)) | ||
| -val n = 600851475143L | ||
| +val r = factors(600851475143L).last | ||
| -val limit = math.sqrt(n) | ||
| - | ||
| -val r = ps.view.takeWhile(_ < limit).filter(n % _ == 0).last | ||
| - | ||
| -assert(r == 6857) // 265 ms | ||
| +assert(r == 6857) // 1 ms |
0 comments on commit
767e10b