// 0007.go contains some functions to solve ProjectEuler.net's Problem #7 // https://projecteuler.net/problem=7 package main import "fmt" // IsPrimeNumber returns true if a given number is a prime number annd false // if not. The given number is assumed to be a positive number. func IsPrimeNumber(number int) bool { if number == 2 || number == 3 { // Return true as 2,3 are always prime return true } if number == 1 || number % 2 == 0 || number % 3 == 0 { // Return false as 1 or numbers dividable by 2,3 are never prime return false } // Loop to find other possible primes for i := 5; i*i <= number; i += 6 { if number % i == 0 || number % (i+2) == 0 { // Factor found, number cannot be prime return false } } // No factors were found, number must be prime return true } // NthPrime finds the nth prime number, given the number to find (n). func NthPrime(n int) int { // Initialise variables count := 1 i := 3 for i = 3; count < n; i+=2 { if IsPrimeNumber(i) { // Check if number is prime count += 1 } } // Backtrack one loop return i-2 } func main(){ // Answer the problem fmt.Println(NthPrime(10001)) }