Esercizi di Rust
Prime Numbers in Rust
Test whether a number is prime and list the primes up to 30 with filter.
Cosa imparerai
- 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.
Punti chiave
- Numbers below 2 are not prime.
- Divisors up to the square root are enough.
- filter keeps the numbers that pass the test.
Esempio Rust eseguibile
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: trueEsercitati
Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
I tuoi progressi sono salvati in questo browser Accedi per conservarli su ogni dispositivo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Verifica Numero Primo Stabilisci se un numero è primo. Facile
- List Primes With a Sieve Find primes up to a limit by marking composite multiples. Media