Мы знаем log_add, но как сделать log_subtract?

Ваша проблема уже почти решена ... просто выведите все пары:

for x in my_dict:
    y = my_dict[x]
    if my_dict.get(y) == x:
        # x/y is an amicable pair
        ...

обратите внимание, что каждая пара будет извлечена дважды (как x / y, так и y / [ 114]) и совершенные числа (числа, являющиеся суммой их делителей) только один раз; не уверен из текста вашей проблемы, если 6/6 считается дружной парой или нет.

13
задан tshepang 18 October 2013 в 15:34
поделиться

1 ответ

Как насчет

double log_subtract(double x, double y) {
  if(x <= y)
    // error!! computing the log of a negative number
  if(y == neginf)
    return x;
  return x + log1p(-exp(y-x));
}

Это просто на основе какой-то быстрой математики, которую я сделал ...

11
ответ дан 2 December 2019 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: