// 0010.go contains some functions to solve ProjectEuler.net's Problem #10 // https://projecteuler.net/problem=10 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 } // SumPrimes returns the sum of all prime numbers under the given max number. func SumPrimes(maxNumber int) int { sum := 2 for i := 3; i < maxNumber; i += 2 { if IsPrimeNumber(i) { // Add to sum as is a prime number sum += i } } // Return result return sum } func main(){ // Display result fmt.Println(SumPrimes(2000000)) }