Нікому не кажіть, але я прозвав машину подорожі в часі мого дядька! Мій дядько одержимий простими номерами, і це показує на машині - він запрограмував це так, що він може переходити лише до дат, які підсумовують простому номеру.
Тож до цього не може йти, 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
)