| 1234567891011121314151617 |
- use ibig::UBig;
- // a * (a+1) * ... * (b-1)
- fn product(a: u32, b: u32) -> UBig {
- if b == a + 1 {
- UBig::from(a)
- } else {
- let mid = a + (b - a) / 2;
- product(a, mid) * product(mid, b)
- }
- }
- fn main() {
- let n: u32 = 1000000;
- let factorial = product(1, n + 1);
- println!("{}! = {:#x}", n, factorial);
- }
|