Rust-Übungen

Prime Numbers in Rust

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

  • Einsteiger
  • 2 Min. Lesezeit
  • 1 ausführbares Beispiel
Das lernst du
  • 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.

Das Wichtigste

  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.

Ausführbares Rust-Beispiel

Rust
Code ausführen →
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));
}
Run-Button für dieses Beispiel erstellen Ergebnis der Ausführung
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
97 is prime: true

Üben

Öffne das Beispiel im Online-Compiler, ändere einen Wert oder füge eine Zeile hinzu und sage die Ausgabe voraus, bevor du es ausführst. Bring den Code danach absichtlich zum Scheitern und lies die Meldung des Compilers.

Lektion fertig?

Markiere sie als gelernt, um deinen Fortschritt zu verfolgen.

Weiter: Strings: String and &str →

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges