metodą wysokiej precyzji (mpmath)...") start_time = time.perf_counter()

# 1. Obliczamy log10(n!) używając wysokiej precyzji loggamma # log10(x) = ln(x) / ln(10) ln_fact = mpmath.loggamma(n + 1) log10_fact = ln_fact / mpmath.log(10)

# 2. Liczba cyfr (część całkowita + 1) liczba_cyfr = mpmath.floor(log10_fact) + 1

# 3. Wyciągamy pierwsze m cyfr # Mantysa logarytmu dziesiętnego mantysa = log10_fact - mpmath.floor(log10_fact)

# Pierwsze cyfry to 10^mantysa # Przesuwamy przecinek o m-1 miejsc pierwsze_cyfry_raw = mpmath.power(10, mantysa) wynik_finalny = int(pierwsze_cyfry_raw * mpmath.power(10, m - 1))

end_time = time.perf_counter()

print("-" * 45) print(f"Całkowita liczba cyfr: {int(liczba_cyfr)}") print(f"Pierwsze {m} cyfr: {wynik_finalny}") print(f"Czas obliczeń: {end_time - start_time:.6f} s") print("-" * 45)Dla silnia wynosi w przybliżeniu:

Zobacz też

GNU Multiple Precision Arithmetic Library MPSolve OpenSSL

Bibliografia

BigInteger Struct (System.Numerics). docs.microsoft.com. Retrieved 2026-04-26.

Kategoria:Komputerowe reprezentacje danych