Fork channel

Create a new channel as a copy of main.

Rename channel

Rename main to:

Delete channel

Delete main? This cannot be undone.

factors.go
// Package factors deals with factors.
package factors

import (
	"fmt"
)

const MAX = 100_000

// Sieve holds the factors for a given number.
type Sieve map[int][]int

var mysieve = make(Sieve, MAX)

func genSieve(n int) {
	for i := 1; i <= n; i++ {
		for j := i; j <= n; j += i {
			mysieve[j] = append(mysieve[j], i)
		}
	}
}

// ListPrimes returns the primes below n.
func ListPrimes(n int) ([]int, error) {
	if n > MAX && n < 1 {
		return nil, fmt.Errorf("%d is too high or low, max: %d, min: 1", n, MAX)
	}

	genSieve(n)

	var primes []int
	for i := 2; i < n; i++ {
		if len(mysieve[i]) == 2 {
			primes = append(primes, i)
		}
	}
	return primes, nil
}