Jangan bilang siapa-siapa, tapi saya sudah mencambuk mesin perjalanan waktu paman saya! Paman saya terobsesi dengan bilangan prima, dan itu menunjukkan di mesin - ia telah memprogramnya sehingga hanya bisa pergi ke tanggal yang jumlah bilangan prima.
Jadi tidak bisa pergi ke 1947-08-15
karena 1947 + 8 + 15 = 1970, yang bukan bilangan prima. Hal bisa pergi ke 1947-07-25
, karena 1947 + 7 + 25 = 1979, yang merupakan perdana. Jadi jika saya ingin kembali menonton perayaan kemerdekaan India, sepertinya saya harus pergi beberapa minggu sebelumnya dan menunggu 20 hari itu.
Saya memiliki beberapa kencan lain yang ingin saya tuju, dan saya juga harus pergi ke kencan sebelumnya (atau jika saya beruntung, sama dengan) tanggal target saya, yang meringkas ke nomor utama. Tapi saya tidak sabar, dan tidak ingin menunggu terlalu lama - jadi saya ingin mencari tanggal yang bisa saya gunakan yang paling dekat dengan tanggal target saya.
Dapatkah Anda menulis saya sebuah program yang mengambil tanggal target saya dan memberi saya tanggal yang harus saya masukkan ke mesin waktu - tanggal terdekat sebelum atau sama dengan tanggal yang diberikan yang bagian-bagiannya menambahkan hingga bilangan prima?
(Untuk tantangan ini, kami menggunakan proleptik Gregorian yang - yang berarti kami menggunakan kalender Gregorian saat ini bahkan untuk periode ketika orang-orang saat itu menggunakan kalender Julian yang lebih tua.)
Memasukkan
- Kencan
- idealnya, setiap tanggal di Era Saat Ini (AD); praktis, apa pun bagian dari bahasa Anda yang secara alami dapat menangani
- dalam format tunggal yang dapat dibaca manusia⁺ yang Anda suka
Keluaran
- Tanggal yang paling dekat dengan tanggal input, yang kurang dari atau sama dengan input dan yang tanggal + bulan + tahun jumlah hingga bilangan prima.
- dalam format tunggal yang dapat dibaca manusia⁺ yang Anda suka
⁺: "dapat dibaca manusia" seperti pada hari, bulan dan tahun yang secara terpisah dijabarkan, dalam urutan apa pun
Uji kasus
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
(Terima kasih kepada @Shaggy, @PeterTaylor, dan @Arnauld untuk bantuannya.)
Fri Jul 25 02:46:39 CEST 1947
)