fun largestPrimeFactor(n: Long): Long {
var num = n
var div = 2L
var maxPFact = -1L
while (num != 0L) {
if (num % div != 0L) {
div++
} else {
maxPFact = num
num /= div // Integer division
if (num == 1L) {
return maxPFact
}
}
}
return maxPFact
}
fun main() {
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
*/