Никому не говорите, но я назвал машину для путешествий во времени моего дяди! Мой дядя, тем не менее, одержим простыми числами, и это видно из машины - он запрограммировал ее так, чтобы она могла переходить только к датам, которые суммируют до простого числа.
Так что это не может пойти, 1947-08-15
потому что 1947 + 8 + 15 = 1970, что не является простым числом. Это может пойти 1947-07-25
, потому что 1947 + 7 + 25 = 1979, который является основным. Поэтому, если я хочу вернуться, чтобы посмотреть празднования независимости Индии, похоже, мне придется пойти на несколько недель раньше и подождать эти 20 дней.
У меня есть несколько других дат, на которые я хочу пойти, и мне также придется перейти на дату до (или, если повезет, равно) моей целевой даты, которая суммируется с простым числом. Я, однако, нетерпелив и не хочу ждать слишком много - поэтому я хочу найти дату, которую я могу использовать, которая ближе всего подходит к моей целевой дате.
Можете ли вы написать мне программу, которая берет мою целевую дату и дает мне дату, которую я должен ввести в машину времени - ближайшую дату до или равную данной дате, чьи части складываются в простое число?
(Для этой задачи мы используем пролаптический григорианский календарь - это просто означает, что мы используем текущий григорианский календарь даже для периодов, когда люди тогда использовали более старый юлианский календарь.)
вход
- Свидание
- в идеале, любая дата в текущую эру (AD); практически, любое подмножество того, что ваш язык может естественно обрабатывать
- в любом удобном для восприятия формате
Выход
- Дата, ближайшая к входной дате, которая меньше или равна входной и чья дата + месяц + год суммирует простое число.
- в любом удобном для восприятия формате
⁺: «читаемый человеком», как день, месяц и год, все отдельно указаны в любом порядке
Контрольные примеры
1947-08-15
=> 1947-07-25
1957-10-04
=> 1957-09-27
1776-07-04
=> 1776-07-04
999-12-12
=> 0999-12-10
2018-06-20
=> 2018-06-15
1999-01-02
=> 1998-12-29
1319-12-29
=> 1319-07-01
(Спасибо @Shaggy, @PeterTaylor и @Arnauld за помощь в вопросе.)
Fri Jul 25 02:46:39 CEST 1947
)