Упражнения по Rust

Prime Numbers in Rust

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

  • Начальный
  • Чтение: 2 мин
  • Примеров для запуска: 1
Что вы узнаете
  • 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.

Главное

  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.

Пример на Rust, который можно запустить

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: true

Практика

Откройте пример в онлайн-компиляторе, измените значение или добавьте строку и попробуйте предсказать вывод до запуска. Затем намеренно сломайте код и прочитайте сообщение компилятора.

Закончили этот урок?

Отметьте его как изученный, чтобы следить за прогрессом.

Далее: Strings: String and &str →

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи