primes/primes.go

38 lines
749 B
Go
Raw Normal View History

2014-01-15 15:53:35 +00:00
package main
// Go version of a prime number finder
import (
2014-01-15 15:53:35 +00:00
"fmt"
"math"
2014-01-15 15:53:35 +00:00
"os"
"strconv"
)
// In stead of in place printing of each prime, it seems
2014-01-16 12:53:44 +00:00
// fmt.Println is costly, and causes the program to take
// 7x more time, so we gain speed at the expense of RAM
// by storing them all in a slice and printing once
2014-01-15 15:53:35 +00:00
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: go run primes.go [MAX]")
return
}
//primes := make([]int, 0)
max, _ := strconv.Atoi(os.Args[1])
for i := 3; i < max; i += 2 {
isPrime := true
for j := 3; j <= int(math.Ceil(math.Sqrt(float64(i)))); j += 2 {
if i%j == 0 {
isPrime = false
2014-01-15 15:53:35 +00:00
break
}
}
if isPrime {
//primes = append(primes, i)
fmt.Println(i)
2014-01-15 15:53:35 +00:00
}
}
//fmt.Println(primes)
2014-01-15 15:53:35 +00:00
}