Я думаю, что проще всего объяснить эту проблему последовательно. Начните с ввода номера 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
? Т.е. максимумы хранятся на стороне? (Я не уверен, что этот пример математически возможен.)