Skip to content

Instantly share code, notes, and snippets.

@davidgraca
Created February 2, 2017 16:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidgraca/5c1ce349112caa82dd82d0403e5874d8 to your computer and use it in GitHub Desktop.
Save davidgraca/5c1ce349112caa82dd82d0403e5874d8 to your computer and use it in GitHub Desktop.
Euler problem no3 in Scala
import scala.math
object largestprime {
val initNumber:Long = 600851475143L //> initNumber : Long = 600851475143
def IsPrimeNumber(p:Long):Boolean = {
if(p < 10){ p == 2 || p== 3 || p== 5 || p== 7}
else{ p % 2 != 0 && p % 3 != 0 && p % 5 != 0 && p % 7 != 0 }
} //> IsPrimeNumber: (p: Long)Boolean
def stream(i: Long = 1): Stream[Long] = i #:: stream(i + 1)
//> stream: (i: Long)Stream[Long]
def GetNextPrime(startingNumber:Long) = {
val prime = for {
a <- stream(startingNumber + 1)
if(IsPrimeNumber(a))
} yield a
prime
} //> GetNextPrime: (startingNumber: Long)scala.collection.immutable.Stream[Long]
//|
var number:Long = initNumber //> number : Long = 600851475143
var lastPrime:Long=GetNextPrime(1).head //> lastPrime : Long = 2
while(number!=1){
if(number % lastPrime == 0){
number = number / lastPrime
}
else{
lastPrime=GetNextPrime(lastPrime).head
}
}
lastPrime //> res0: Long = 6857
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment