package prime var sieve []int // Nth finds the nth prime and 'true' if the 0th prime wasn't requested func Nth(n int) (int, bool) { if n == 0 { return 0, false } if len(sieve) == 0 { // Let's just do some initialization sieve = append(sieve, 0) sieve = append(sieve, 2) } sieveLen := len(sieve) for i := sieve[len(sieve)-1]; sieveLen <= n; i++ { isPrime := true for j := 1; j < sieveLen; j++ { if i%sieve[j] == 0 { isPrime = false break } } if isPrime { // Found a new prime sieve = append(sieve, i) sieveLen = len(sieve) } } return sieve[n], true }