Created
May 4, 2013 17:53
-
-
Save asbubam/5518222 to your computer and use it in GitHub Desktop.
Euler scala Ex03
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 >소인수라고 합니다. | |
예를 들면 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