use std::time::Instant;
fn is_perfect_square_brute(aa: u32) -> bool {
if aa == 0 || aa == 1 {
return true;
}
for a in 0u64..=aa as u64 / 2 {
let square = a * a;
if square == aa as u64 {
return true;
}
if square > aa as u64 {
return false;
}
}
false
}
fn main() {
let timer = Instant::now();
for i in 0u32..100 {
let sqrt = (i as f64).sqrt() as u32;
assert_eq!(sqrt * sqrt == i, is_perfect_square_brute(i), "{}", i);
}
for i in 2_147_395_500u32..2_147_395_601 {
let sqrt = (i as f64).sqrt() as u32;
assert_eq!(sqrt * sqrt == i, is_perfect_square_brute(i), "{}", i);
}
println!("Time elapsed {:?}", timer.elapsed());
}
