44 lines
1 KiB
Go
44 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math/big"
|
|
"rcu"
|
|
"sort"
|
|
)
|
|
|
|
func main() {
|
|
primes := rcu.Primes(379)
|
|
primorial := big.NewInt(1)
|
|
var fortunates []int
|
|
bPrime := new(big.Int)
|
|
for _, prime := range primes {
|
|
bPrime.SetUint64(uint64(prime))
|
|
primorial.Mul(primorial, bPrime)
|
|
for j := 3; ; j += 2 {
|
|
jj := big.NewInt(int64(j))
|
|
bPrime.Add(primorial, jj)
|
|
if bPrime.ProbablyPrime(5) {
|
|
fortunates = append(fortunates, j)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
m := make(map[int]bool)
|
|
for _, f := range fortunates {
|
|
m[f] = true
|
|
}
|
|
fortunates = fortunates[:0]
|
|
for k := range m {
|
|
fortunates = append(fortunates, k)
|
|
}
|
|
sort.Ints(fortunates)
|
|
fmt.Println("After sorting, the first 50 distinct fortunate numbers are:")
|
|
for i, f := range fortunates[0:50] {
|
|
fmt.Printf("%3d ", f)
|
|
if (i+1)%10 == 0 {
|
|
fmt.Println()
|
|
}
|
|
}
|
|
fmt.Println()
|
|
}
|