Ne le dites à personne, mais j'ai piqué la machine à voyager dans le temps de mon oncle! Mon oncle est obsédé par les nombres premiers, cependant, et cela se voit dans la machine - il l'a programmé de sorte qu'il ne puisse aller qu'aux dates qui se résument à un nombre premier.
Donc ça ne peut pas aller 1947-08-15
parce que 1947 + 8 + 15 = 1970, ce qui n'est pas un nombre premier. Il peut aller à 1947-07-25
, car 1947 + 7 + 25 = 1979, ce qui est premier. Donc, si je veux revenir pour regarder les célébrations de l'indépendance de l'Inde, il semble que je devrai y aller quelques semaines plus tôt et attendre ces 20 jours.
J'ai d'autres dates auxquelles je veux aller, et je devrai également aller à une date antérieure (ou si j'ai de la chance, égale) à ma date cible, qui se résume à un nombre premier. Je suis impatient, cependant, et je ne veux pas trop attendre - je veux donc trouver la date que je peux utiliser la plus proche de ma date cible.
Pouvez-vous m'écrire un programme qui prend ma date cible et me donne la date que je devrais entrer dans la machine à remonter le temps - la date la plus proche avant ou égale à la date donnée dont les parties totalisent un nombre premier?
(Pour ce défi, nous utilisons le calendrier grégorien proleptique - ce qui signifie simplement que nous utilisons le calendrier grégorien actuel même pour les périodes où les gens utilisaient alors l'ancien calendrier julien.)
Contribution
- Un rendez-vous
- idéalement, n'importe quelle date de l'ère actuelle (AD); pratiquement, quel que soit le sous-ensemble de ce que votre langue peut naturellement gérer
- dans n'importe quel format lisible par l'homme - vous aimez
Sortie
- La date la plus proche de la date d'entrée, qui est inférieure ou égale à l'entrée et dont la date + mois + année se résume à un nombre premier.
- dans n'importe quel format lisible par l'homme - vous aimez
⁺: "lisible par l'homme" comme le jour, le mois et l'année, tous énoncés séparément, dans n'importe quel ordre
Cas de test
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
(Merci à @Shaggy, @PeterTaylor et @Arnauld pour leur aide avec la question.)
Fri Jul 25 02:46:39 CEST 1947
)