Esercizi di Go

Prime Numbers in Go

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

  • Principiante
  • 3 min di lettura
  • 1 esempio eseguibile
Cosa imparerai
  • 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.

Punti chiave

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

Esempio Go eseguibile

Go
Esegui il codice →
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))
}
Crea un pulsante Run per questo esempio Risultato dell'esecuzione
[2 3 5 7 11 13 17 19 23 29]
97 is prime: true

Esercitati

Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.

Hai finito questa lezione?

Segnala come imparata per tenere traccia dei tuoi progressi.

Prossima: Strings →

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide