日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Kotlin generateSequence 迭代器 從1開始產生1000個素數 take 得介紹

作者:安果移不動 更新時間: 2022-05-12 編程語言

這里用到了 take函數

他是從

元數據里面取出來對應個數得元素并且返回

如果沒到這個元素也返回當前元素

就是我要取出來1000個數據但是實際里面就是670個 那么他就會返回670個

如果里面1001 個那么他就取出來1000個數據

generateSequence

般針對某個序列,你可能會定義一個只要序列有新值產生就被調用一下的函數,這樣的函數叫迭代器函數。

generateSequence ?函數接受一個初始種子值作為序列的起步值,在用 generateSequence 定義的序列上調用一個函數時,generateSequence ?函數會調用你指定的迭代器函數,決定下一個要生產的值
?

上代碼

fun Int.isPrime(): Boolean {
    (2 until this).map {
        if (this % it == 0) return false
    }
    return true
}


fun main() {
    //你想產生頭1000個素數
    //假定 0-5000之內,可以找到1000個素數
    val toList = (1..5000).toList().filter { it.isPrime() }.take(1000)
    //打印發現只有670個素數 正常想法是用while 來完成這個需求。but。。也可以通過一些特殊手段來完成
    println(toList.size)
    println(toList)

    // 我們可以通過序列生成想要得數據
    //seed 1 是起始值 value+1 就是步長是1
    val content = generateSequence(1) { value ->
        value + 1
    }.filter { it.isPrime() }.take(1000).toList()
    println(content.size)
    println(content)


}

?相比 while得冗余運算,非常得時尚。

原文鏈接:https://blog.csdn.net/mp624183768/article/details/124184140

欄目分類
最近更新