Go Practice Exercises

Prime Numbers in Go

Test whether a number is prime and list the primes up to 30.

  • Beginner
  • 3 min read
  • 1 runnable example
What you'll learn
  • Trial division
  • Stopping at the square root
  • Building a slice
2 to 7
2prime
3prime
42 x 2
5prime
62 x 3
7prime

Only divisible by 1 and itself

A prime number is larger than 1 and can only be divided by 1 and itself. Write a function that tests one number, then use it in a loop.

It is enough to try divisors up to the square root of n, which is what divisor*divisor <= n checks. The loop in main appends every number for which isPrime returns true.

Key points

  1. Numbers below 2 are not prime.
  2. Divisors up to the square root are enough.
  3. append collects the primes.

Runnable Go example

Go
Run code →
main.go
package main

import "fmt"

func isPrime(n int) bool {
	if n < 2 {
		return false
	}
	for divisor := 2; divisor*divisor <= n; divisor++ {
		if n%divisor == 0 {
			return false
		}
	}
	return true
}

func main() {
	primes := []int{}
	for n := 1; n <= 30; n++ {
		if isPrime(n) {
			primes = append(primes, n)
		}
	}
	fmt.Println(primes)
	fmt.Println("97 is prime:", isPrime(97))
}
Get a Run button for this example Result of running the code
[2 3 5 7 11 13 17 19 23 29]
97 is prime: true

Practice

Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.

Finished this lesson?

Mark it as learned to track your progress.

Next: Strings →

Practice with a challenge

Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.

All challenges