- O código abaixo encontra o valor de x para o valor de N fornecido.
- O script recebe também a quantidade de casas decimais, ou seja, a precisão desejada. Um bom valor para a precisão é o dobro de dígitos de N.
from mpmath import mp
import sys
def find_base_closest_to_n(N, precision):
mp.dps = precision + 1
num_digits = len(N.replace('.', '').replace('-', ''))
initial_guess = num_digits + 1
#print(f"Valor1 Inicial {initial_guess}")
while True:
try:
base = mp.findroot(lambda a: a**a - mp.mpf(N), initial_guess)
break # Se a raiz foi encontrada, interrompe o loop
except ValueError as e:
initial_guess -= 1
return base
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Forneça N e a Precisão como argumentos. Ex: python3 xelevadoaxigualancom50digitos.py 12345678901234567890123456789012345678901234567890 100")
else:
N = sys.argv[1]
precision = int(sys.argv[2])
result_base = find_base_closest_to_n(N, precision)
print(f"A base igual ao expoente mais próxima de {N} com {precision} casas é {result_base}")
Nenhum comentário:
Postar um comentário