File tree Expand file tree Collapse file tree 6 files changed +41
-50
lines changed
Expand file tree Collapse file tree 6 files changed +41
-50
lines changed Original file line number Diff line number Diff line change 11# ## Test Image specific config
22
3- FROM rust:1.86 -slim-bookworm
3+ FROM rust:1.89 -slim-bookworm
44
55RUN apt-get update
66RUN apt-get -y install pkg-config libssl-dev moreutils
Original file line number Diff line number Diff line change 22name = " previousprime"
33version = " 0.1.0"
44authors = [" OGordoo <marcosafonso8@hotmail.com>" ]
5- edition = " 2021 "
5+ edition = " 2024 "
66
77# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88
Original file line number Diff line number Diff line change 1- pub fn prev_prime ( nbr : u64 ) -> u64 {
2- if nbr <= 2 {
3- return 0 ;
4- }
5-
6- let mut min_number = 2 ;
1+ use std:: iter;
72
8- for i in 2 ..nbr {
9- if is_prime ( i) {
10- min_number = i;
11- }
3+ #[ inline]
4+ pub fn prev_prime ( nbr : usize ) -> usize {
5+ if nbr > 2 {
6+ iter:: once ( 2 )
7+ . chain ( ( 3 ..nbr) . step_by ( 2 ) )
8+ . rfind ( |& n| is_prime ( n) )
9+ . unwrap_or_default ( )
10+ } else {
11+ Default :: default ( )
1212 }
13-
14- min_number
1513}
1614
17- fn is_prime ( nbr : u64 ) -> bool {
18- if nbr > 0 {
19- if nbr <= 1 {
20- return false ;
21- }
22- let mut d = 2 ;
23- while d * d <= nbr {
24- if nbr % d == 0 {
25- return false ;
26- }
27- d += 1 ;
28- }
15+ fn is_prime ( n : usize ) -> bool {
16+ if n < 2 {
17+ return false ;
18+ }
19+ if n <= 3 {
2920 return true ;
30- } else {
21+ }
22+ if n. is_multiple_of ( 2 ) || n. is_multiple_of ( 3 ) {
3123 return false ;
3224 }
25+ let mut d = 5 ;
26+ while d * d <= n {
27+ if n. is_multiple_of ( d) || n. is_multiple_of ( d + 2 ) {
28+ return false ;
29+ }
30+ d += 6 ;
31+ }
32+ true
3333}
Original file line number Diff line number Diff line change 22name = " previousprime_test"
33version = " 0.1.0"
44authors = [" OGordoo <marcosafonso8@hotmail.com>" ]
5- edition = " 2021 "
5+ edition = " 2024 "
66
77# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88
99[dependencies ]
10- previousprime = {path = " ../../solutions/previousprime" }
10+ previousprime = {path = " ../../solutions/previousprime" }
Original file line number Diff line number Diff line change 1+ use previousprime:: * ;
2+
3+ #[ test]
4+ fn prev_prime_test ( ) {
5+ assert_eq ! ( 0 , prev_prime( 0 ) ) ;
6+ assert_eq ! ( 0 , prev_prime( 2 ) ) ;
7+ assert_eq ! ( 2 , prev_prime( 3 ) ) ;
8+ assert_eq ! ( 3 , prev_prime( 5 ) ) ;
9+ assert_eq ! ( 31 , prev_prime( 34 ) ) ;
10+ assert_eq ! ( 631 , prev_prime( 633 ) ) ;
11+ assert_eq ! ( 478139 , prev_prime( 478152 ) ) ;
12+ }
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments