package main import ( "flag" "fmt" "log" "os" ) const ( defaultLimit = 1_000_000_000 defaultOutput = "primes.txt" ) func main() { limit := flag.Int("n", defaultLimit, "upper limit, inclusive, to sieve") out := flag.String("out", defaultOutput, "output file path") flag.Parse() f, err := os.Create(*out) if err != nil { log.Fatalf("create %s: %v", *out, err) } defer f.Close() count, err := writePrimes(f, sieve(*limit)) if err != nil { log.Fatalf("write %s: %v", *out, err) } if err := f.Close(); err != nil { log.Fatalf("close %s: %v", *out, err) } fmt.Printf("Wrote %d prime numbers up to %d to %s\n", count, *limit, *out) }