extern crate num;
use num::{BigInt, BigUint, Zero, One, FromPrimitive};
fn factorial(n: usize) -> BigUint {
let mut f: BigUint = One::one();
for i in 1..(n+1) {
let bu: BigUint = FromPrimitive::from_usize(i).unwrap();
f = f * bu;
}
f
}
fn main() {
println!("{}", factorial(1_000_000));
}
$ cargo build --release
$ tiem ./factorial
real 20m46.867s
user 18m15.180s
sys 2m28.616s