Алогоритм подбора числа такой чтобы давал конечную дробь (с заданным n знаков) при этом число обратное полученной дроби должно быть конечной дробью? нужно подобрать число от 0 до 1 такое чтобы оно было конечной дробью при этом обратное число также должно являться конечной дробью с заданным количеством разрядов ( в приведенной табличке 8 таких чисел) . в екселе простой подбор ограничен количеством строк таблички 2^16 так что шаг итерации получается предел 0,0001 вот при этом шаге итерации из 10000 строк получается такой набор чиселшаг проц обратное округл до 5 знаков 0,0001 0,9999 1,0001000100010000000000000 1,0001000000000000000000000 0,0002 0,9998 1,0002000400080000000000000 1,0002000000000000000000000 0,0003 0,9997 1,0003000900270100000000000 1,0003000000000000000000000 0,0004 0,9996 1,0004001600640300000000000 1,0004000000000000000000000 0,0005 0,9995 1,0005002501250600000000000 1,0005000000000000000000000 0,0006 0,9994 1,0006003602161300000000000 1,0006000000000000000000000 0,0007 0,9993 1,0007004903432400000000000 1,0007000000000000000000000 0,0031 0,9969 1,0031096398836400000000000 1,0031100000000000000000000 0,0032 0,9968 1,0032102728731900000000000 1,0032100000000000000000000 0,2 0,8 1,2499999999999900000000000 1,2500000000000000000000000 0,9142 0,0858 11,6550116550002000000000000 0,116550002 посоветуйте готовый алгоритм ексель, питон, желательно
Вот пример алгоритма на Python, который находит число в интервале от 0 до 1, которое при делении на 1.0 дает конечную дробь с заданным количеством разрядов, и обратное данному числу также является конечной дробью с заданным количеством разрядов:
def find_fraction(n): for i in range(1, 10**n): num = i / (10**n) if is_finite(num) and is_finite(1.0 / num): return num def is_finite(x): return x.as_integer_ratio()[1] == 1 n = 8 result = find_fraction(n) print(round(result, n)) print(round(1.0 / result, n))
Этот код найдет число от 0 до 1, которое будет иметь конечную дробь с n разрядами, и обратное данному числу также будет иметь конечную дробь с n разрядами.
Вот пример алгоритма на Python, который находит число в интервале от 0 до 1, которое при делении на 1.0 дает конечную дробь с заданным количеством разрядов, и обратное данному числу также является конечной дробью с заданным количеством разрядов:
def find_fraction(n):for i in range(1, 10**n):
num = i / (10**n)
if is_finite(num) and is_finite(1.0 / num):
return num
def is_finite(x):
return x.as_integer_ratio()[1] == 1
n = 8
result = find_fraction(n)
print(round(result, n))
print(round(1.0 / result, n))
Этот код найдет число от 0 до 1, которое будет иметь конечную дробь с n разрядами, и обратное данному числу также будет иметь конечную дробь с n разрядами.