Мої міркування виходять з того, що в данному контексті результатом розглядаються числа паліндроми. І всі міркування щодо початкової і кінцевої цифр стосуються лише їх. До речі, пан Strukov правий, що у мене немає коректного доведення гіпотези про те, що існує паліндром виду 9.....9 (з непарною кількістю цифр), що є добутком двох простих r-розрядних чисел (де r = n div 2 + 1). Але наведені приклади (знизу до факту рішення проблеми) дають мені право вважати, що таке припущення коректне (і конкретно для мене цього досить).
PS: після вчорашньої апробації ідеї Ihor Iaromenko щодо перевірки зверху тільки чисел паліндромів і знаходження першого з них, що відповідає умові, обговорення рішення, котре потребує більше ресурсів вже не виглядає таким цікавим.
Идея абсолютно работоспособна :)
Вот что получилось в результате:
Test started
Test finished
Count of iteration: 12892
Found: 1
Time: 00:00:00.000
ЗЫ: Как-то даже очень быстро для такой красивой задачи
Ну... можно поработать в этом направлении :) (за строгими доказательствами это к более высоколобым нежели я товарищам)
Четное число цифр в результате не рассматриваем, так как известно, что такое делится на 11
989 = 23 * 43
99899 = 283 * 353
9975799 = 3061 * 3259
999949999 = то, что нам и требовалось найти :)
з кількістю цифр особливих проблем не бачу — результат добутку буде 9- чи
Стосовно цифр по краях числа. Наші прості закінчуються на (1, 3, 7, 9). Подивимося на останні цифри, котрі вони можуть давати:
1 * 1 = 1
1 * 3 = 3
1 * 7 = 7
1 * 9 = 9
3 * 3 = 9
---
3 * 7 = 21
3 * 9 = 27
7 * 7 = 49
7 * 9 = 63
9 * 9 = 81
Комбінації з перенесенням значення в
Залишаються
1 * 1 = 1
1 * 3 = 3
1 * 7 = 7
1 * 9 = 9
3 * 3 = 9
Тобто, серед чисел виду 9VZXYXZV9 має бути таке, котре утворене добутком двох простих п,ятизначних чисел. Тобто слід брати такі, які дають 9 на початку і 9 на кінці, а це лише ті за наших простих, котрі починаються на 1, 3, 9.
Профіт :)
С учетом замечания Ihor Iaromenko количество внутренних циклов снизилось до 18991, а время — до 0,17 сек.
Я исходил из того, что искомое число будет наибольшим в случае, когда оно будет начинаться и заканчиваться наибольшей цифрой. Поэтому, заведомо отсекал те варианты, которые не будут давать в начальной позиции 9.
ЗЫ: с учетом комментариев по поводу десятизначных палиндромов by Ihor Iaromenko результат можно еще улучшить. :)
Не JS. Но опыт реализации одного и того же решения на компилируемых и интерпретируемых языках (в частности, Delphi и VBA) подсказывает, что на сегодняшний день разница в быстродействии не превышает два раза — как правило, это коэффициент до ~1,2. Встречал даже отсутствие разницы в быстродействии!
С другой стороны, чтобы не привязываться ко времени, можно попытаться оценить количество исполнений самого глубокого цикла в решении. В моем варианте для этой задачи их 342020.
~0.25 сек. :)
Задание действительно интересное :).
Правда ваше решение, похоже, содержит ошибку — число 99429 не является простым.
Я виходив з того, що внаслідок перенесення в старший розряд та позиція, яка заповнилася б без переносу буде містити значення менше за 9.
Повторюся, що побудова паліндромів з перевіркою «згори» на розкладення в два простих п,ятизначних множника значно випереджає за часом всі реалізовані мною варіанти з обрізанням варіантів зменшення числа кандидатів.