111 lines
2.5 KiB
Python
111 lines
2.5 KiB
Python
import math
|
|
from decimal import *
|
|
|
|
sec = 1000000
|
|
minute = 60 * sec
|
|
hour = 60 * minute
|
|
day = 24 * hour
|
|
month = 30 * day
|
|
year = 365 * day
|
|
century = 100 * year
|
|
|
|
# n * lg(n) == c
|
|
# ==> 2 ** (lg(n)) * lg (n) == c
|
|
# ==> lg(n) == W(c)
|
|
# ==> n == exp(W(c))
|
|
# see http://en.wikipedia.org/wiki/Lambert_W_function#Example_2
|
|
|
|
|
|
def n_lgn(c):
|
|
lower = 0.0
|
|
upper = 10e13
|
|
while True:
|
|
middle = (lower + upper) / 2
|
|
if lower == middle or middle == upper:
|
|
return middle
|
|
if middle * math.log(middle, 2) > c:
|
|
upper = middle
|
|
else:
|
|
lower = middle
|
|
|
|
|
|
# n!
|
|
def de_factorial(c):
|
|
n = 0
|
|
while True:
|
|
if math.factorial(n) >= c:
|
|
return n - 1
|
|
else:
|
|
n += 1
|
|
|
|
# lg(n)
|
|
print("2 ^ 10 ^ 6")
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (minute / sec))
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (hour / sec))
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (day / sec))
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (month / sec))
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (year / sec))
|
|
print("2 ^ ( %d * 10 ^ 6 )" % (century / sec))
|
|
print("")
|
|
# sqrt(n)
|
|
print("{:.1e}".format(Decimal(sec ** 2)))
|
|
print("{:.1e}".format(Decimal(minute ** 2)))
|
|
print("{:.3e}".format(Decimal(hour ** 2)))
|
|
print("{:.5e}".format(Decimal(day ** 2)))
|
|
print("{:.6e}".format(Decimal(month ** 2)))
|
|
print("{:.9e}".format(Decimal(year ** 2)))
|
|
print("{:.9e}".format(Decimal(century ** 2)))
|
|
print("")
|
|
# n
|
|
print("{:.1e}".format(Decimal(sec)))
|
|
print("{:.1e}".format(Decimal(minute)))
|
|
print("{:.1e}".format(Decimal(hour)))
|
|
print("{:.2e}".format(Decimal(day)))
|
|
print("{:.3e}".format(Decimal(month)))
|
|
print("{:.4e}".format(Decimal(year)))
|
|
print("{:.4e}".format(Decimal(century)))
|
|
print("")
|
|
# n lg(n)
|
|
print(n_lgn(sec))
|
|
print(n_lgn(minute))
|
|
print(n_lgn(hour))
|
|
print(n_lgn(day))
|
|
print(n_lgn(month))
|
|
print(n_lgn(year))
|
|
print(n_lgn(century))
|
|
print("")
|
|
# n^2
|
|
print(math.sqrt(sec))
|
|
print(math.sqrt(minute))
|
|
print(math.sqrt(hour))
|
|
print(math.sqrt(day))
|
|
print(math.sqrt(month))
|
|
print(math.sqrt(year))
|
|
print(math.sqrt(century))
|
|
print("")
|
|
# n^3
|
|
print(sec ** (1 / 3.0))
|
|
print(minute ** (1 / 3.0))
|
|
print(hour ** (1 / 3.0))
|
|
print(day ** (1 / 3.0))
|
|
print(month ** (1 / 3.0))
|
|
print(year ** (1 / 3.0))
|
|
print(century ** (1 / 3.0))
|
|
print("")
|
|
# 2^n
|
|
print(math.log(sec, 2))
|
|
print(math.log(minute, 2))
|
|
print(math.log(hour, 2))
|
|
print(math.log(day, 2))
|
|
print(math.log(month, 2))
|
|
print(math.log(year, 2))
|
|
print(math.log(century, 2))
|
|
print("")
|
|
# n!
|
|
print(de_factorial(sec))
|
|
print(de_factorial(minute))
|
|
print(de_factorial(hour))
|
|
print(de_factorial(day))
|
|
print(de_factorial(month))
|
|
print(de_factorial(year))
|
|
print(de_factorial(century)) |