Ошибка OverflowError: int too large to convert to float стараюсь найти факториал милиона формула выведена из формулыс стирлинга

Рейтинг: 0Ответов: 1Опубликовано: 22.01.2023
import math
n=1000000
f=math.sqrt(157*n)
print(n**500*f*n**n/5000000*1359**n)

Ответы

▲ -1

Думаю, что значение, которое вы вычисляете, слишком большое для того, чтобы быть представленным в виде числа с плавающей точкой. Лучше здесь применить цикл или рекурсию, вместо того, чтобы использовать матем. формулы. Ещё можно попробовать библиотеки decimal или bigfloat для вычисления факториала. Или библиотеку numpy, которая имеет функцию factorial.

n = 1000000
result = 1
for i in range(1, n+1):
    result *= i
print(result)

или так

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

n = 1000000
print(factorial(n))

Ещё можно решить через math

import math
n = 1000000
print(math.gamma(n+1))

Отмечу, что результат лучше сохранять в файл чтобы не тратить много памяти.