package main import ( "math/big" "os" "os/signal" "syscall" ) //lint:ignore U1000 wrong var a big.Int func cleanup(z string) { println() println("last checked number: " + z) } func main() { a := big.NewInt(6) breaker := make(chan os.Signal, 1) signal.Notify(breaker, os.Interrupt, syscall.SIGTERM) go func() { <-breaker cleanup(a.String()) os.Exit(1) }() for { var b, c, d, e, f, g, h, i, j, k big.Int b.Add(a, big.NewInt(-1)) c.Add(a, big.NewInt(1)) if b.ProbablyPrime(20) && c.ProbablyPrime(20) { d.Add(a, &b) e.Add(a, &c) if d.ProbablyPrime(20) && e.ProbablyPrime(20) { f.Mul(a, &b) g.Mul(a, &c) h.Add(&f, big.NewInt(-1)) i.Add(&f, big.NewInt(1)) j.Add(&g, big.NewInt(-1)) k.Add(&g, big.NewInt(1)) if h.ProbablyPrime(20) && i.ProbablyPrime(20) && j.ProbablyPrime(20) && k.ProbablyPrime(20) { println(a.String() + " found!") } } } a.Add(a, big.NewInt(6)) } }