// P41 (**) A list of Goldbach compositions.
// Given a range of integers by its lower and upper limit, print a list of
// all even numbers and their Goldbach composition.
//
// scala> printGoldbachList(9 to 20)
// 10 = 3 + 7
// 12 = 5 + 7
// 14 = 3 + 11
// 16 = 3 + 13
// 18 = 5 + 13
// 20 = 3 + 17
//
// In most cases, if an even number is written as the sum of two prime
// numbers, one of them is very small. Very rarely, the primes are both
// bigger than, say, 50. Try to find out how many such cases there are in
// the range 2..3000.
//
// Example (minimum value of 50 for the primes):
// scala> printGoldbachListLimited(1 to 2000, 50)
// 992 = 73 + 919
// 1382 = 61 + 1321
// 1856 = 67 + 1789
// 1928 = 61 + 1867
object S99Int {
def printGoldbachList(r: Range) {
printGoldbachListLimited(r, 0)
}
def printGoldbachListLimited(r: Range, limit: Int) {
(r filter { n => n > 2 && n % 2 == 0 } map { n => (n, n.goldbach) }
filter { _._2._1 >= limit } foreach {
_ match { case (n, (p1, p2)) => println(n + " = " + p1 + " + " + p2) }
})
}
}```