
Close Enough

За винятком випадків, коли прості множники a, b
вже співпрацюють, залізна рука Fundamental Theorem of Arithmetic диктує, що цілі степені a**pa
і b**pb
ніколи не можуть бути рівними для будь-яких двох натуральних показників pa
і pb
. Однак, у веселому дусі “close enough for government work”, ми визначаємо два таких степені як "збіг", якщо їх різниця abs(a**pa-b**pb)
, помножена на tolerance
, щонайбільше дорівнює меншому з цих степенів. (Це визначення навмисно уникає ділення, щоб воно було швидким і точним для довільно великих цілих чисел) Наприклад, tolerance=100
очікує, що a**pa
і b**pb
будуть в межах 1 %.
Для заданих натуральних чисел a, b
повертає найменші натуральні показники (pa, pb)
які задовольняють вимогу tolerance
.