RosettaCodeData/Task/Pythagorean-triples/Scala/pythagorean-triples.scala
2023-07-01 13:44:08 -04:00

25 lines
764 B
Scala

object PythagoreanTriples extends App {
println(" Limit Primatives All")
for {e <- 2 to 7
limit = math.pow(10, e).longValue()
} {
var primCount, tripCount = 0
def parChild(a: BigInt, b: BigInt, c: BigInt): Unit = {
val perim = a + b + c
val (a2, b2, c2, c3) = (2 * a, 2 * b, 2 * c, 3 * c)
if (limit >= perim) {
primCount += 1
tripCount += (limit / perim).toInt
parChild(a - b2 + c2, a2 - b + c2, a2 - b2 + c3)
parChild(a + b2 + c2, a2 + b + c2, a2 + b2 + c3)
parChild(-a + b2 + c2, -a2 + b + c2, -a2 + b2 + c3)
}
}
parChild(BigInt(3), BigInt(4), BigInt(5))
println(f"a + b + c <= ${limit.toFloat}%3.1e $primCount%9d $tripCount%12d")
}
}