Bài tập Go

Prime Numbers in Go

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

  • Cơ bản
  • Đọc trong 3 phút
  • 1 ví dụ chạy được
Bạn sẽ học được gì
  • 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.

Những điểm quan trọng

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

Ví dụ Go chạy được

Go
Chạy 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))
}
Lấy nút Run cho ví dụ này Kết quả khi chạy
[2 3 5 7 11 13 17 19 23 29]
97 is prime: true

Luyện tập

Mở ví dụ trong trình biên dịch online, đổi một giá trị hoặc thêm một dòng, rồi đoán kết quả trước khi chạy. Sau đó cố ý làm code bị lỗi và đọc thông báo của trình biên dịch.

Bạn học xong bài này chưa?

Đánh dấu đã học để theo dõi tiến độ của bạn.

Tiếp theo: Strings →

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách