Bài tập Rust
Prime Numbers in Rust
Test whether a number is prime and list the primes up to 30 with filter.
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
- Numbers below 2 are not prime.
- Divisors up to the square root are enough.
- filter keeps the numbers that pass the test.
Ví dụ Rust chạy được
Rust
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));
}
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
97 is prime: trueLuyệ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ến độ của bạn đang được lưu trong trình duyệt này Đăng nhập để giữ tiến độ trên mọi thiết bị.
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.
- Kiểm Tra Số Nguyên Tố Xác định xem một số có phải là số nguyên tố hay không. Dễ
- List Primes With a Sieve Find primes up to a limit by marking composite multiples. Trung bình