Найдите минимальную сумму пары, НОД которой больше 1

Опубликовано: 19 Сентября, 2022

Даны два положительных целых числа A и B. Задача состоит в том, чтобы найти два положительных целых числа, принадлежащих интервалу [A, B], таких, что их НОД больше 1, а их сумма является минимальной среди всех возможных пар.

Input: 2, 3
Output: -1
Explanation: Clearly there doesn’t exits any pair for which gcd is greater than 1, Hence we simply return -1.

Input: 2 10
Output: 2 4
Explanation: The smallest pair for which GCD is greater than 1 is 2, 4 .

Подход: Проблема может быть основана на следующем наблюдении:

Two consecutive even numbers have GCD greater than 1 and the difference among them is also minimum.

Основываясь на приведенном выше наблюдении, оптимально найти пару из двух последовательных четных чисел, значения которых находятся ближе всего к нижней границе диапазона. Следуйте шагу ниже, чтобы решить эту проблему:

  • Проверить абсолютную разницу заданного диапазона abs(A – B)
    • Если abs(A – B) <= 1 , то не существует пары, у которой gcd больше 1, выведите -1 .
  • Если первое значение четное
    • выведите (A, A+2) , потому что это наименьшие числа, у которых НОД больше 1.
  • Если первое значение нечетное
    • Проверьте, если (B – A) == 2 , тогда выведите -1 , потому что НОД двух последовательных нечетных чисел всегда равен 1.
    • Проверьте, если (B – A) > 2 , то
      • Если A делится на 3, то выведите (A, A+3) ,
      • В противном случае выведите (A+1, A +3) .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(1)
Вспомогательное пространство: O(1)