From c0a526d745295b2bcde43b5006af95522786160d Mon Sep 17 00:00:00 2001 From: jackfiled Date: Tue, 18 Mar 2025 13:38:56 +0800 Subject: [PATCH] 20250318 finished. --- src/problem/mod.rs | 2 + src/problem/p2614_prime_in_diagonal.rs | 52 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/problem/p2614_prime_in_diagonal.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 9944a92..4122396 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -544,3 +544,5 @@ mod p3110_score_of_a_string; mod p2272_substring_with_largest_variance; mod p1963_minimum_number_of_swaps_to_make_the_string_balanced; + +mod p2614_prime_in_diagonal; diff --git a/src/problem/p2614_prime_in_diagonal.rs b/src/problem/p2614_prime_in_diagonal.rs new file mode 100644 index 0000000..80efa88 --- /dev/null +++ b/src/problem/p2614_prime_in_diagonal.rs @@ -0,0 +1,52 @@ +/** + * [2614] Prime In Diagonal + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn diagonal_prime(nums: Vec>) -> i32 { + let n = nums.len(); + let mut result = 0; + + for i in 0..n { + if Self::is_prime(nums[i][i]) { + result = result.max(nums[i][i]); + } + + if Self::is_prime(nums[i][n - i - 1]) { + result = result.max(nums[i][n - i - 1]); + } + } + + result + } + + fn is_prime(num: i32) -> bool { + if num == 1 { + return false; + } + + !(2..=num.isqrt()).any(|x| num % x == 0) + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2614() { + assert_eq!( + 11, + Solution::diagonal_prime(vec![vec![1, 2, 3], vec![5, 6, 7], vec![9, 10, 11]]) + ); + assert_eq!( + 17, + Solution::diagonal_prime(vec![vec![1, 2, 3], vec![5, 17, 7], vec![9, 10, 11]]) + ); + } +}