package main
import (
"fmt"
"strconv"
"time"
"math"
)
func main() {
var input string
var lim int
var nums []bool
var s, n, m int
fmt.Print("Enter limit for this search: ")
fmt.Scanln(&input)
lim, _ = strconv.Atoi(input)
if lim == 0 {
lim = 100000000
}
s = int(math.Sqrt(float64(lim)))
startTime := time.Now()
nums = make([]bool, lim + 1)
for n = 2; n < s; n++ {
if nums[n] == false {
m = n * n
for m <= lim {
nums[m] = true
m += n
}
}
}
endTime := time.Since(startTime)
fmt.Println("It took ", endTime, " time")
fmt.Print("Do you want to list results (Y/N)?")
fmt.Scanln(&input)
if input == "Y" || input == "y" {
fmt.Println("The primes up to ", lim, " are:")
} else {
fmt.Println("(please wait for prime count)")
}
m = 0
for n = 2; n < lim; n++ {
if nums[n] == false {
if input == "Y" || input == "y" {
fmt.Println(n)
}
m++
}
}
fmt.Println("")
fmt.Println("Total primes = ", m)
}