Алгоритм палиндромного прайм-циклопа


Еженедельная задача 177

Задача, мое решение

Задача 1: Алгоритм Дамма

Задача

Вам дано положительное число $n.

Напишите скрипт, который будет проверять заданное число на соответствие включенной контрольной цифре.

Мое решение

Благодаря приведенной ссылке на Википедию, это оказалось довольно простой задачей. Начиная с 0, измените строку, соответствующую значению этой цифры в текущей строке. Повторяйте, пока не обработаем все цифры. Если последняя строка равна 0, то она подтверждена. Если это что-то другое, то у вас сомнительные данные.

Примеры

$ ./ch-1.py 5724
1

$ ./ch-1.py 5727
0
Войти в полноэкранный режим Выход из полноэкранного режима

Задача 2: Палиндромический предельный циклоп

Задание

Напишите скрипт для генерации первых 20 палиндромных простых циклопических чисел.

Циклопическое число — это число с нечетным количеством цифр, у которого ноль находится только в центре.

Мое решение

Вместо того, чтобы проверять, является ли число палиндромом с 0 в центре, я генерирую левую часть числа, а затем добавляю ноль и число меняется на противоположное. Это проще и быстрее, IMO. YMMV

Затем мне нужно проверить, не содержит ли число других нулей, и является ли оно простым.

Затем я заворачиваю это в цикл, который увеличивает число на единицу и продолжается до тех пор, пока мы не найдем 20 решений. Наконец, я распечатываю результаты.

Примеры

$ ./ch-2.py 
101, 16061, 31013, 35053, 38083, 73037, 74047, 91019, 94049, 1120211, 1150511, 1160611, 1180811, 1190911, 1250521, 1280821, 1360631, 1390931, 1490941, 1520251

$ ./ch-2.pl 
101, 16061, 31013, 35053, 38083, 73037, 74047, 91019, 94049, 1120211, 1150511, 1160611, 1180811, 1190911, 1250521, 1280821, 1360631, 1390931, 1490941, 1520251
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий