Não conte a ninguém, mas eu cortei a máquina de viagem no tempo do meu tio! Meu tio é obcecado por números primos, no entanto, e isso é mostrado na máquina - ele o programou para que ele só possa ir a datas que somam um número primo.
Portanto, não pode ser 1947-08-15
porque 1947 + 8 + 15 = 1970, que não é um número primo. Ele pode ir para 1947-07-25
, porque 1947 + 7 + 25 = 1979, que é primo. Então, se eu quiser voltar para assistir às celebrações da independência da Índia, parece que terei que ir algumas semanas antes e esperar esses 20 dias.
Tenho outras datas em que quero ir e também terei que ir a uma data anterior (ou, se tiver sorte, igual a) à minha data prevista, que totalize um número primo. No entanto, sou impaciente e não quero esperar muito; portanto, quero encontrar a data que posso usar que seja a mais próxima da minha data prevista.
Você pode me escrever um programa que atinja minha data prevista e me forneça a data em que devo inserir a máquina do tempo - a data mais próxima antes ou igual à data especificada cujas partes somam um número primo?
(Para esse desafio, estamos usando o calendário gregoriano proléptico - o que significa simplesmente que usamos o calendário gregoriano atual, mesmo em períodos em que as pessoas usavam o calendário juliano mais antigo.)
Entrada
- Um encontro
- idealmente, qualquer data na era atual (AD); praticamente, qualquer subconjunto do seu idioma possa lidar naturalmente
- em qualquer formato legível por humanos⁺ que você gosta
Saída
- A data mais próxima da data de entrada, que é menor ou igual à entrada e cuja data + mês + ano soma um número primo.
- em qualquer formato legível por humanos⁺ que você gosta
":" Legível por humanos ", como no dia, mês e ano, todos explicitados separadamente, em qualquer ordem
Casos de teste
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
(Obrigado a @Shaggy, @PeterTaylor e @Arnauld pela ajuda na pergunta.)
Fri Jul 25 02:46:39 CEST 1947
)