用go怎么写才能过
查看原帖
用go怎么写才能过
731923
ZYMG楼主2022/5/25 20:25

求助大佬,看别人go有过的,自己写的感觉没的优化了,只有两个AC,后面全超时

package main
import "fmt"

func main() {
    var n,q,c int
    fmt.Scanln(&n,&q)
    b := isz(n)
    for q>0{
        fmt.Scanln(&c)
        fmt.Println(b[c-1])
        q--
    }
}

func isz(n int) []int{
    var a [1e8+1]bool
    index := 0
    prime := make([]int,5761500)
    for i := 2;i<=n;i++{
        if !a[i]{
            prime[index] = i
            index++
        }
        for j:=0;j<index&&i*prime[j]<=n;j++{
            a[i * prime[j]] = true
            if i%prime[j] == 0{
                break
            }
        }
    }
    return prime
}
2022/5/25 20:25
加载中...