CCCPaste

Primes Golang

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)
}