Еще не успел освоить что то более сложное чем простые циклы в kotlin, поэтому не знаю как можно взять индекс в самом теле цикла.
Для примера на java цикл выглядит так:
for (int i = 2; i <= n / i; i++)
В kotlin пробую такую конструкцию:
for (i in 2..n.div(i))
где вторая i выделана как не разпознаная. Как вызвать индекс в такой ситуации?
Цикл for в Kotlin не занимается микроменеджментом переменной-счётчика, он перебирает элементы Iterable. В вашем примере 2..n - это объект типа IntRange, перебор элементов которого даёт целые числа от 2 до n, которые и присваиваются переменной i на каждой итерации цикла. Перебираемый объект создаётся до вхождения в цикл, изменять его во время перебора нельзя. Аналогом из Java для такого цикла будет цикл foreach: for (Integer i : ints). Если вам нужно в Kotlin менять условие выхода из цикла на каждой итерации, воспользуйтесь циклом while.
Можно решить эту проблему проще
Java:
int cond = (int) Math.sqrt(n);
for (int i = 2; i <= cond; i++)
System.out.println(i);
Kotlin:
val cond: Int = sqrt(n.toDouble()).toInt()
for (i in 2..cond) println(i)
О том как работает Ranges в Kotlin
Продвижение своими сайтами как стратегия роста и независимости