oppgaver så langt

This commit is contained in:
Håkon Størdal 2025-03-22 13:49:25 +01:00
parent 4f3385850f
commit df84d4f18e
17 changed files with 628 additions and 0 deletions

6
sqrtx-69/Cargo.toml Normal file
View file

@ -0,0 +1,6 @@
[package]
name = "sqrtx-69"
version = "0.1.0"
edition = "2024"
[dependencies]

60
sqrtx-69/src/main.rs Normal file
View file

@ -0,0 +1,60 @@
// fn my_sqrt(x: i32) -> i32 {
// let mut upper_range = x / 2;
// let mut last_i = 0;
// if x <= 5 {
// upper_range = x;
// }
// if x >= i32::MAX {
// return (i32::MAX as f64).sqrt().floor() as i32;
// }
// for i in 0..=upper_range {
// let power_of_2 = i * i;
// if power_of_2 == x {
// return i;
// } else if power_of_2 > x {
// return last_i;
// } else {
// last_i = i;
// }
// }
// 0
// }
fn my_sqrt(x: i32) -> i32 {
if x < 2 {
return x; // Early return for 0 and 1
}
let mut right = 46340.min(x / 2);
if x >= right * right {
return right;
}
let mut left = 2;
while left <= right {
let mid = left + (right - left) / 2;
let mid_squared = mid * mid;
if mid_squared == x {
return mid;
} else if mid_squared < x {
left = mid + 1;
} else {
right = mid - 1;
}
}
right // After the loop, `right` is the largest value whose square is <= x}
}
fn main() {
// let sol = my_sqrt(2147483647);
let sol = my_sqrt(2147395599);
println!("{}", sol);
}