Skip to content

Instantly share code, notes, and snippets.

@asbubam
Created May 4, 2013 17:53
Show Gist options
  • Save asbubam/5518222 to your computer and use it in GitHub Desktop.
Save asbubam/5518222 to your computer and use it in GitHub Desktop.
Euler scala Ex03
/*
어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 >소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
*/
object Ex03 extends App {
println(run(13195))
println(run(600851475143L))
def run(n: Long): Long = {
var result = n
while(true) {
var p = smallestFactor(result)
if(p < result)
result = result / p
else
return result
}
return result
}
def smallestFactor(n: Long): Long = {
var i = 2
val end = Math.sqrt(n)
while(i <= end) {
if(n % i == 0) return i
i = i + 1
}
return n
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment