xah icon

0007 - Project Euler

xah | PRO | 11/24/21 12:03:55 PM UTC (Edited) | 0 ⭐ | 331 👁️ | Never ⏰ | []
Go |

1.18 KB

|

None

|

0 👍

/

0 👎

// 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))
}

Comments