package main

import (
    "fmt"
)

func eratosthenes(n int) []bool {
    primes := make([]bool, n+1)
    for i := 2; i <= n; i++ {
        primes[i] = true
    }
    for p := 2; p*p <= n; p++ {
        if primes[p] == true {
            for i := p * p; i <= n; i += p {
                primes[i] = false
            }
        }
    }
    return primes
}

func main() {
    fmt.Println("Enter a positive integer:")
    var n int
    _, err := fmt.Scanf("%d", &n)
    if err != nil {
        fmt.Println("Invalid input")
        return
    }
    primes := eratosthenes(n)
    fmt.Println("Primes up to", n, ":")
    for i := 2; i <= n; i++ {
        if primes[i] == true {
            fmt.Println(i)
        }
    }
}

В этой реализации мы используем булевый массив primes, чтобы отслеживать, является ли число i простым или нет. Мы начинаем с предположения, что все числа от 2 до n являются простыми, а затем устанавливаем primes[i] в false для каждого i, который является кратным p для каждого простого числа p. Мы продолжаем до тех пор, пока p^2 не станет больше n.

Затем мы выводим все простые числа, используя булевый массив primes. В main мы запрашиваем у пользователя ввод положительного целого числа n и выводим все простые числа до n.
แพ็คเกจการนำเข้าหลัก ( "fmt" ) func Eratosthenes(n int) []bool { ไพรม์ := make([]bool, n+1) for i := 2; ฉัน <= n; i++ { ไพรม์[i] = true } สำหรับ p := 2; พี*พี <= n; p++ { ถ้าจำนวนเฉพาะ[p] == true { สำหรับ i := p * p; ฉัน <= n; i += p { primes[i] = false } } } return primes } func main() { fmt.Println("Enter a positive integer:") var n int _, err := fmt.Scanf("%d" , &n) if err != nil { fmt.Println("Invalid input") return } ช่วงเวลา := Eratosthenes(n) fmt.Println("Primes up to", n, ///) for i := 2; ฉัน <= n; i++ { if primes[i] == true { fmt.Println(i) } } } ในการใช้งานนี้ เราใช้ไพรม์อาร์เรย์บูลีนเพื่อติดตามว่าตัวเลข i เป็นจำนวนเฉพาะหรือไม่ เราเริ่มต้นด้วยสมมุติว่าตัวเลขทั้งหมดตั้งแต่ 2 ถึง n เป็นจำนวนเฉพาะ จากนั้นตั้งค่าจำนวนเฉพาะ[i] เป็นเท็จสำหรับทุกค่า i ที่เป็นจำนวนทวีคูณของ p สำหรับทุกจำนวนเฉพาะ p เราดำเนินต่อไปจนกระทั่ง p^2 มากกว่า n จากนั้นเราจะพิมพ์จำนวนเฉพาะทั้งหมดโดยใช้จำนวนเฉพาะอาร์เรย์บูลีน โดยหลักแล้ว เราขอให้ผู้ใช้กรอกจำนวนเต็มบวก n และพิมพ์จำนวนเฉพาะทั้งหมดจนถึง n
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence