' FB 1.05.0 Win64 #include "gmp.bi" Sub leftFactorial(rop As __mpz_struct, op As ULong) Dim As __mpz_struct t1 mpz_init_set_ui(@t1, 1) mpz_set_ui(@rop, 0) For i As ULong = 1 To op mpz_add(@rop, @rop, @t1) mpz_mul_ui(@t1, @t1, i) Next mpz_clear(@t1) End Sub Function digitCount(op As __mpz_struct) As ULong Dim As ZString Ptr t = mpz_get_str(0, 10, @op) Dim As ULong ret = Len(*t) Deallocate(t) Return ret End Function Dim As __mpz_struct t mpz_init(@t) For i As ULong = 0 To 110 If i <= 10 OrElse i Mod 10 = 0 Then leftFactorial(t, i) gmp_printf(!"!%u = %Zd\n", i, @t) End If Next Print For i As ULong = 1000 To 10000 Step 1000 leftFactorial(t, i) Print "!"; Str(i); " has "; digitCount(t); " digits" Next mpz_clear(@t) Print Print "Press any key to quit" Sleep