Я думаю, що найпростіше пояснити цей виклик послідовно. Почніть з вхідного номера 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до . Давайте подивимось на сусідів:3141
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? Тобто максимуми зберігаються на стороні? (Я не впевнений, чи можливий приклад математично.)