Go 練習問題

Prime Numbers in Go

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

  • 初級
  • 約3分で読めます
  • 実行できるサンプル 1 件
学べること
  • 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.

重要なポイント

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

実行できる Go のサンプル

Go
コードを実行 →
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))
}
この例の実行ボタンを作成 実行結果
[2 3 5 7 11 13 17 19 23 29]
97 is prime: true

練習

サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。

このレッスンを終えましたか?

学習済みにすると進み具合を記録できます。

次へ: Strings →

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ