factorial.rs 344 B

1234567891011121314151617
  1. use ibig::UBig;
  2. // a * (a+1) * ... * (b-1)
  3. fn product(a: u32, b: u32) -> UBig {
  4. if b == a + 1 {
  5. UBig::from(a)
  6. } else {
  7. let mid = a + (b - a) / 2;
  8. product(a, mid) * product(mid, b)
  9. }
  10. }
  11. fn main() {
  12. let n: u32 = 1000000;
  13. let factorial = product(1, n + 1);
  14. println!("{}! = {:#x}", n, factorial);
  15. }