func Run() { var s euler.Sieve p := 2 count := 0 // Move the closure out of the loop for efficiency. It does // save some time. circular := true pcheck := func(num int) { if !s.IsPrime(num) { circular = false } } for p < 1000000 { circular = true eachRotation(p, pcheck) if circular { // fmt.Printf("%d\n", p) count++ } p = s.NextPrime(p) } fmt.Printf("%d\n", count) }
func Run() { var sieve euler.Sieve prime := 2 for i := 0; i < 10000; i++ { prime = sieve.NextPrime(prime) } fmt.Printf("%d\n", prime) }
func init() { earlyPrimes = make([]int, 10) var sieve euler.Sieve p := 2 for i := range earlyPrimes { earlyPrimes[i] = p p = sieve.NextPrime(p) } return }
func Run() { var sv euler.Sieve largest := 0 for p := 2; p < 9999999; p = sv.NextPrime(p) { if isPandigital(p) { largest = p } } fmt.Printf("%d\n", largest) }
func Run() { var sieve euler.Sieve largest := 0 largestValue := 0 for p := 7; p < 1000; p = sieve.NextPrime(p) { size := dlog(p) if size > largest { largest = size largestValue = p } } fmt.Printf("%d\n", largestValue) }
func Run() { var sieve euler.Sieve base := 2 for { size := familySize(&sieve, base, 1) if size >= 8 { break } base = sieve.NextPrime(base) } fmt.Printf("%d\n", base) }
func Run() { var s euler.Sieve count := 0 sum := 0 p := 11 for count < 11 { if isRightPrime(&s, p) && isLeftPrime(&s, p) { sum += p count++ // fmt.Printf("%d\n", p) } p = s.NextPrime(p) } fmt.Printf("%d\n", sum) }
func Run() { var sieve euler.Sieve num := start var prime int = 2 for { if num == int64(prime) { fmt.Printf("%d\n", prime) break } // Divide out the prime as many times as possible. for num%int64(prime) == 0 { num /= int64(prime) } prime = sieve.NextPrime(prime) } }
func divisorCount(sieve *euler.Sieve, n int) (result int) { result = 1 tmp := n prime := 2 for tmp > 1 { dcount := 0 for tmp%prime == 0 { tmp /= prime dcount += 1 } result *= dcount + 1 if tmp > 1 { prime = sieve.NextPrime(prime) } } return }