Bài tập Rust

Prime Numbers in Rust

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

  • Cơ bản
  • Đọc trong 2 phút
  • 1 ví dụ chạy được
Bạn sẽ học được gì
  • Trial division
  • Stopping at the square root
  • filter on a range
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 to filter a range.

It is enough to try divisors up to the square root of n, which is what divisor * divisor <= n checks. filter keeps the numbers for which is_prime returns true and collect gathers them into a vector.

Những điểm quan trọng

  1. Numbers below 2 are not prime.
  2. Divisors up to the square root are enough.
  3. filter keeps the numbers that pass the test.

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

Rust
Chạy code →
main.rs
fn is_prime(n: u32) -> bool {
    if n < 2 {
        return false;
    }
    let mut divisor = 2;
    while divisor * divisor <= n {
        if n % divisor == 0 {
            return false;
        }
        divisor += 1;
    }
    true
}

fn main() {
    let primes: Vec<u32> = (1..=30).filter(|&n| is_prime(n)).collect();
    println!("{:?}", primes);
    println!("97 is prime: {}", is_prime(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.

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