September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,36 @@
|
|||
// version 1.1.2
|
||||
// compiled with flag -Xcoroutines=enable to suppress 'experimental' warning
|
||||
|
||||
import kotlin.coroutines.experimental.*
|
||||
|
||||
fun isPrime(n: Int) : Boolean {
|
||||
if (n < 2) return false
|
||||
if (n % 2 == 0) return n == 2
|
||||
if (n % 3 == 0) return n == 3
|
||||
var d : Int = 5
|
||||
while (d * d <= n) {
|
||||
if (n % d == 0) return false
|
||||
d += 2
|
||||
if (n % d == 0) return false
|
||||
d += 4
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun generatePrimes() =
|
||||
buildSequence {
|
||||
yield(2)
|
||||
var p = 3
|
||||
while (p <= Int.MAX_VALUE) {
|
||||
if (isPrime(p)) yield(p)
|
||||
p += 2
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val primes = generatePrimes().take(10000) // generate first 10,000 primes
|
||||
println("First 20 primes : ${primes.take(20).toList()}")
|
||||
println("Primes between 100 and 150 : ${primes.filter { it in 100..150 }.toList()}")
|
||||
println("Number of primes between 7700 and 8000 = ${primes.filter { it in 7700..8000 }.count()}")
|
||||
println("10,000th prime = ${primes.last()}")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue