Advertisement
xah

0010 - Project Euler

xah
Nov 23rd, 2021
874
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.17 KB | None | 0 0
  1. // 0010.go contains some functions to solve ProjectEuler.net's Problem #10
  2. // https://projecteuler.net/problem=10
  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. // SumPrimes returns the sum of all prime numbers under the given max number.
  33. func SumPrimes(maxNumber int) int {
  34.     sum := 2
  35.  
  36.     for i := 3; i < maxNumber; i += 2 {
  37.         if IsPrimeNumber(i) {
  38.             // Add to sum as is a prime number
  39.             sum += i
  40.         }
  41.     }
  42.  
  43.     // Return result
  44.     return sum
  45. }
  46.  
  47. func main(){
  48.     // Display result
  49.     fmt.Println(SumPrimes(2000000))
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement