Files

65 lines
1.0 KiB
Go
Raw Permalink Normal View History

2019-05-11 13:22:43 +03:00
// Copyright © 2018 Inanc Gumus
// Learn Go Programming Course
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
//
2019-10-30 19:34:44 +03:00
// For more tutorials : https://learngoprogramming.com
// In-person training : https://www.linkedin.com/in/inancgumus/
// Follow me on twitter: https://twitter.com/inancgumus
2019-05-11 13:22:43 +03:00
// go run . {1..100}
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
2019-05-11 16:37:39 +03:00
const usageMsg = `Type a couple of unique numbers.
Separate them with spaces.`
2019-05-11 13:22:43 +03:00
// remember [1:] skips the first argument
2019-05-11 16:37:39 +03:00
args := os.Args[1:]
if len(args) == 0 {
fmt.Println(usageMsg)
return
}
2019-05-11 13:22:43 +03:00
main:
2019-05-11 16:37:39 +03:00
for _, arg := range args {
2019-05-11 13:22:43 +03:00
n, err := strconv.Atoi(arg)
if err != nil {
// skip non-numerics
continue
}
switch {
// prime
case n == 2, n == 3:
2019-05-11 13:22:43 +03:00
fmt.Print(n, " ")
continue
// not a prime
case n <= 1, n%2 == 0, n%3 == 0:
2019-05-11 13:22:43 +03:00
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()
}