Skip to content
Snippets Groups Projects
Commit 5f5a5953 authored by Philippe Suter's avatar Philippe Suter
Browse files

weird testcase: finding prime numbers by unrolling....

parent 4639239d
No related branches found
No related tags found
No related merge requests found
object Prime {
// an attempt at defining isPrime in PureScala...
// for positive numbers only
def isPrime(i : Int) : Boolean = {
(i >= 2 && noneDivides(2, i))
}
def noneDivides(start : Int, number : Int) : Boolean = {
if(start == number) {
true
} else {
!divides(start, number) && noneDivides(start + 1, number)
}
}
// for positive numbers only
def divides(i : Int, j : Int) : Boolean = {
val result = i == j || (i < j && ((j / i) * i == j))
result
}
// no a problem
def allTheseArePrime() : Boolean = {
isPrime(2) && isPrime(31) && isPrime(2) && isPrime(17) && isPrime(53)
} ensuring(res => res)
// Can't seem to get that one to work in reasonable time
// def findTwoLargePrimes(x : Int, y : Int) : Boolean = {
// x > 200 && y > x && isPrime(x) && isPrime(y)
// } ensuring(res => !res)
// Seems to work with lucky tests only :)
def findLargePrime(x : Int) : Boolean = {
x > 200 && isPrime(x)
} ensuring(res => !res)
// Just for testing.
def main(args : Array[String]) : Unit = {
def test(n : Int) : Unit = {
println("Is " + n + " prime ? -> " + isPrime(n))
}
test(119)
test(31)
test(1)
test(2)
test(0)
println(allTheseArePrime)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment