Я думаю, що найпростіше пояснити цей виклик послідовно. Почніть з вхідного номера N і:
- Знайдіть його найвищий простий коефіцієнт
- Перевірка номера вище і нижче N і подивитися , якщо найвищий головним фактором вище (тобто найвищий первинний фактор N-1 і / або N + 1 , вище , ніж фактор N .
- Продовжуйте перевіряти більш високі та / або менші числа сусідніх N у напрямках, де збільшуються найвищі коефіцієнти ( (N-2, N-3 ...) та / або (N + 2, N + 3 ...) тощо на)
- Після того, як немає жодних простих факторів в будь-якому напрямку, які вищі, ніж ті, які ми вже знайшли, ми зупиняємось і виводимо найвищий простий коефіцієнт, який ми стикалися.
Розглянемо приклад:
245
має основні фактори 5, 7, 7
. Його сусідами є:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
Найвищий основний фактор зростає в обох напрямках, тому ми повинні дивитись на наступного сусіда:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
Зараз найвищі основні фактори зменшуються в обох напрямках, тому найвищий основний фактор, з яким ми стикалися, є 61
, і тому його слід повернути.
Ще один приклад:
Давайте розберемося 1024
. Основними її чинниками є 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
. Основними факторами найближчих сусідів є:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
Найвищий простий коефіцієнт зростає в обох напрямках, від або 2
до . Давайте подивимось на сусідів:31
41
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
Найвищий простий коефіцієнт для 1022
є 73
, а найвищий основний коефіцієнт для 1026
- 19
. Оскільки 19
вона нижча, ніж 41
нас це не цікавить. Він все ще збільшується для чисел, менших ніж N, тому ми перевіримо наступне в цьому напрямку :
1021 -> 1021
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
1021
є прем'єр-міністром і найвищим розмахом, з яким ми стикалися, тому його слід повернути.
Правила:
- Ви отримаєте лише позитив,
N
більший за1
і менший2^31-2
. - Формати введення та виведення необов’язкові, але цифри повинні бути в базі 10.
- Вам слід продовжувати пошук вищих праймерів до тих пір, поки найвище значення зростатиме в цьому напрямку. Напрямки не залежать один від одного.
Тестові приклади:
Формат: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=2
насправді, здається, кращий випадок, оскільки 1
не має первинних факторів, тому немає максимального основного фактора, з яким ми можемо порівняти, щоб вирішити, чи варто продовжувати.
2
для N. Потім отримуємо5
для N-1 і61
для N + 1. Тоді отримуємо19
для N-2 і67
для N + 2. Чи слід продовжувати намагатися знижувати цифри, з тих пір19>5
чи припинити, з тих пір5<61
? Тобто максимуми зберігаються на стороні? (Я не впевнений, чи можливий приклад математично.)