fn is_prime(num :f64) -> bool {
    for i in range(2, num.sqrt() as u64) {
        if num as u64 % i == 0 {
            return false
        }
    }
    true
}

fn fatorize_prime(num :f64) {
    for i in range(2, num.sqrt() as u64) {
        if num as u64 % i == 0 && is_prime(i as f64) {
            println!("{}", i);
        }
    }
}

#[test]
fn is_prime_test() {
    assert!(is_prime(4) == false, "{} {} {}", is_prime(4), false, 4);
}

#[test]
fn is_prime_test2() {
    assert!(is_prime(5) == true, "{} {} {}", is_prime(5), true, 5);
}

fn main() {
    fatorize_prime(233237766723323232f64);
}

fn is_prime(num :u64) -> bool {
    for i in range(2, num) {
        if num % i == 0 {
            return false
        }
    }
    true
}

fn fatorize_prime(num :u64) {
    for i in range(2, num) {
        if num % i == 0 && is_prime(i) {
            println!("{}", i);
        }
    }
}

#[test]
fn is_prime_test() {
    assert!(is_prime(4) == false, "{} {} {}", is_prime(4), false, 4);
}

#[test]
fn is_prime_test2() {
    assert!(is_prime(5) == true, "{} {} {}", is_prime(5), true, 5);
}

fn main() {
    fatorize_prime(2332377667);
}
--- 
+++ 
@@ -1,15 +1,16 @@
-fn is_prime(num :f64) -> bool {
-    for i in range(2, num.sqrt() as u64) {
-        if num as u64 % i == 0 {
+
+fn is_prime(num :u64) -> bool {
+    for i in range(2, num) {
+        if num % i == 0 {
             return false
         }
     }
     true
 }
 
-fn fatorize_prime(num :f64) {
-    for i in range(2, num.sqrt() as u64) {
-        if num as u64 % i == 0 && is_prime(i as f64) {
+fn fatorize_prime(num :u64) {
+    for i in range(2, num) {
+        if num % i == 0 && is_prime(i) {
             println!("{}", i);
         }
     }
@@ -26,5 +27,5 @@
 }
 
 fn main() {
-    fatorize_prime(233237766723323232f64);
+    fatorize_prime(2332377667);
 }
Build a more perfomant function that utilizes sqrt.
