Вот код, который работает правильно:
Код: Выделить всё
val primes: Sequence = sequence {
var numbers = generateSequence(2) { it + 1 }
Log.d("testsss", "Initial numbers: ${numbers.take(10).toList()}") // Initial numbers
while (true) {
val prime = numbers.first()
Log.d("testsss", "Current prime: $prime")
yield(prime)
numbers = numbers.drop(1).filter { it % prime != 0 }
Log.d("testsss", "After filtering with prime $prime: ${numbers.take(10).toList()}") // After filtering
}
}
val primesList = primes.take(10).toList()
Log.d("testsss", "Final primes: $primesList")
println(primesList)
Код: Выделить всё
Initial numbers: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Current prime: 2
After filtering with prime 2: [3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
Current prime: 3
After filtering with prime 3: [5, 7, 11, 13, 17, 19, 23, 25, 29, 31]
Current prime: 5
After filtering with prime 5: [7, 11, 13, 17, 19, 23, 29, 31, 37, 41]
Current prime: 7
After filtering with prime 7: [11, 13, 17, 19, 23, 29, 31, 37, 41, 43]
Current prime: 11
After filtering with prime 11: [13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Current prime: 13
After filtering with prime 13: [17, 19, 23, 29, 31, 37, 41, 43, 47, 53]
Current prime: 17
After filtering with prime 17: [19, 23, 29, 31, 37, 41, 43, 47, 53, 59]
Current prime: 19
After filtering with prime 19: [23, 29, 31, 37, 41, 43, 47, 53, 59, 61]
Current prime: 23
After filtering with prime 23: [29, 31, 37, 41, 43, 47, 53, 59, 61, 67]
Current prime: 29
Final primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Код: Выделить всё
val primes: Sequence = sequence {
var numbers = generateSequence(2) { it + 1 }
Log.d("testsss", "Initial numbers: ${numbers.take(10).toList()}") // Initial numbers
var prime: Int
while (true) {
prime = numbers.first()
Log.d("testsss", "Current prime: $prime")
yield(prime)
numbers = numbers.drop(1).filter { it % prime != 0 }
Log.d("testsss", "After filtering with prime $prime: ${numbers.take(10).toList()}") // After filtering
}
}
val primesList = primes.take(10).toList()
Log.d("testsss", "Final primes: $primesList")
println(primesList)
Код: Выделить всё
Initial numbers: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Current prime: 2
After filtering with prime 2: [3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
Current prime: 3
After filtering with prime 3: [5, 7, 8, 10, 11, 13, 14, 16, 17, 19]
Current prime: 5
After filtering with prime 5: [6, 7, 8, 9, 11, 12, 13, 14, 16, 17]
Current prime: 6
After filtering with prime 6: [7, 8, 9, 10, 11, 13, 14, 15, 16, 17]
Current prime: 7
After filtering with prime 7: [8, 9, 10, 11, 12, 13, 15, 16, 17, 18]
Current prime: 8
After filtering with prime 8: [9, 10, 11, 12, 13, 14, 15, 17, 18, 19]
Current prime: 9
After filtering with prime 9: [10, 11, 12, 13, 14, 15, 16, 17, 19, 20]
Current prime: 10
After filtering with prime 10: [11, 12, 13, 14, 15, 16, 17, 18, 19, 21]
Current prime: 11
After filtering with prime 11: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
Current prime: 12
Final primes: [2, 3, 5, 6, 7, 8, 9, 10, 11, 12]
Подробнее здесь: https://stackoverflow.com/questions/786 ... -4-missing