Files
learngo/13-loops/exercises/01-loops/07-crunch-the-primes/solution/main.go

55 lines
781 B
Go
Raw Normal View History

2018-10-13 23:30:21 +03:00
// For more tutorials: https://blog.learngoprogramming.com
//
// Copyright © 2018 Inanc Gumus
// Learn Go Programming Course
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
//
package main
import (
"fmt"
"os"
"strconv"
)
//
func main() {
// remember [1:] skips the first argument
main:
for _, arg := range os.Args[1:] {
n, err := strconv.Atoi(arg)
if err != nil {
// skip non-numerics
continue
}
switch {
// not a prime
case n <= 0 || n%2 == 0 || n%3 == 0:
continue
// prime
case n == 2 || n == 3:
fmt.Print(n, " ")
continue
}
for i, w := 5, 2; i*i <= n; {
// not a prime
if n%i == 0 {
continue main
}
i += w
w = 6 - w
}
// all checks ok: it's a prime
fmt.Print(n, " ")
}
fmt.Println()
}