Let’s say I want to write:
for (int i = 2; i*i <= n; ++i) {}
Is there a way to write this in Kotlin without while?
Let’s say I want to write:
for (int i = 2; i*i <= n; ++i) {}
Is there a way to write this in Kotlin without while?
There is a way but it’s not very pleasant:
for (i in 2..Math.sqrt(n.toDouble()).toInt()) {}
Frankly, I’d just use while
for cases such as this.
You can do something like this. But I don’t think it’s worth it
fun main(args: Array<String>){
//sampleStart
val n = 10
for (i in generateSequence(1) { it + 1 }.takeWhile{ it * it < n })
println(i)
//sampleEnd
}
Since the only requirement was to do it without while
:
fun main(args: Array<String>) {
val n = 10
tailrec fun loop(i: Int): Unit = if (i * i < n ) Unit else loop(i + 1)
loop(2)
}
How did you add runnable code to your post?
You may use run-kotlin
as a language name in ``` markdown syntax
This is incorrect, the condition is p*p <= n
not p <= sqrt(n)
. But thanks anyway.
Thanks