object LargestPrimeFactor {
def largestPrimeFactor(n: Long): Long = {
var num = n
var div = 2L
var maxPFact = -1L
while (num != 0) {
if (num % div != 0) {
div += 1
} else {
maxPFact = num
num /= div // Integer division
if (num == 1) {
return maxPFact
}
}
}
maxPFact
}
def main(args: Array[String]): Unit = {
println(largestPrimeFactor(124)) // 2 x 2 x 31
println(largestPrimeFactor(288)) // 2 x 2 x 2 x 2 x 2 x 3 x 3
println(largestPrimeFactor(1288)) // 2 x 2 x 2 x 7 x 23
println(largestPrimeFactor(100000000)) // 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5
}
}
/*
run:
31
3
23
5
*/