func primes(below uint32) []uint32 {
	sieve := make([]bool, below)
	for i := 2; i < len(sieve); i++ {
		sieve[i] = true
	}
	for p := 2; p*p < len(sieve); p++ {
		if !sieve[p] {
			continue
		}
		for i := p << 1; i < len(sieve); i += p {
			sieve[i] = false
		}
	}
	nF := float64(below)
	out := make([]uint32, 0, int(nF/math.Log(nF)))
	for p := uint32(3); p < below; p++ {
		if sieve[p] {
			out = append(out, p)
		}
	}
	return out
}
primes generates an array containing all the odd prime numbers < below
package sample
import (
	"io"
	"math"
	"math/big"
	"sync"
	"github.com/cronokirby/safenum"
	"github.com/taurusgroup/multi-party-sig/internal/params"
	"github.com/taurusgroup/multi-party-sig/pkg/pool"
)