/* * File: primes.kt * Compilation: kotlinc primes.kt * Execution: kotlin PrimesKt limit * where limit is a positive integer * Purpose: Prints all primes <= limit, 10 primes per line. * Author: SS */ // return true iff n is an odd prime fun isOddPrime(n: Int): Boolean { var d = 3 while (d * d <= n) { if (n % d == 0) return false d += 2 } return true } // return true iff n is prime fun isPrime(n: Int) = when { n < 2 -> false n == 2 -> true n % 2 == 0 -> false else -> isOddPrime(n) } const val PRIMES_PER_LINE = 10 fun main(args: Array) { val limit = args[0].toInt() var count = 0 for (n in 1..limit) if (isPrime(n)) { count = (count+1) % PRIMES_PER_LINE val specifier = if (count == 0) "%8d%n" else "%8d" print(specifier.format(n)) } println() }