xah

0007 - Project Euler

xah
Oct 23rd, 2021 (edited)
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.18 KB | None | 0 0
  1. // 0007.go contains some functions to solve ProjectEuler.net's Problem #7
  2. // https://projecteuler.net/problem=7
  3. package main
  4.  
  5. import "fmt"
  6.  
  7. // IsPrimeNumber returns true if a given number is a prime number annd false
  8. // if not. The given number is assumed to be a positive number.
  9. func IsPrimeNumber(number int) bool {
  10.     if number == 2 || number == 3 {
  11.         // Return true as 2,3 are always prime
  12.         return true
  13.     }
  14.  
  15.     if number == 1 || number % 2 == 0 || number % 3 == 0 {
  16.         // Return false as 1 or numbers dividable by 2,3 are never prime
  17.         return false
  18.     }
  19.  
  20.     // Loop to find other possible primes
  21.     for i := 5; i*i <= number; i += 6 {
  22.         if number % i == 0 || number % (i+2) == 0 {
  23.             // Factor found, number cannot be prime
  24.             return false
  25.         }
  26.     }
  27.  
  28.     // No factors were found, number must be prime
  29.     return true
  30. }
  31.  
  32. // NthPrime finds the nth prime number, given the number to find (n).
  33. func NthPrime(n int) int {
  34.     // Initialise variables
  35.     count := 1
  36.     i := 3
  37.  
  38.     for i = 3; count < n; i+=2 {
  39.         if IsPrimeNumber(i) {
  40.             // Check if number is prime
  41.             count += 1
  42.         }
  43.     }
  44.  
  45.     // Backtrack one loop
  46.     return i-2
  47. }
  48.  
  49. func main(){
  50.     // Answer the problem
  51.     fmt.Println(NthPrime(10001))
  52. }
Add Comment
Please, Sign In to add comment