; prime palindrome
(define (palindrome? n)
(define (rev-digits n)
(let loop ((n n) (sum 0))
(if (zero? n) sum
(loop (quotient n 10)
(+ (* 10 sum) (modulo n 10))))))
(= n (rev-digits n)))
(define (prime? n)
(if (even? n) (= n 2)
(let loop ((d 3))
(if (< n (* d d)) #t
(if (zero? (modulo n d)) #f
(loop (+ d 2)))))))
(define (pp k)
(let loop ((k k) (n 2) (ns (list)))
(if (zero? k) (reverse ns)
(if (and (prime? n) (palindrome? n))
(loop (- k 1) (+ n 1) (cons n ns))
(loop k (+ n 1) ns)))))
(display (pp 100)) (newline)
OyBwcmltZSBwYWxpbmRyb21lCgooZGVmaW5lIChwYWxpbmRyb21lPyBuKQogIChkZWZpbmUgKHJldi1kaWdpdHMgbikKICAgIChsZXQgbG9vcCAoKG4gbikgKHN1bSAwKSkKICAgICAgKGlmICh6ZXJvPyBuKSBzdW0KICAgICAgICAobG9vcCAocXVvdGllbnQgbiAxMCkKICAgICAgICAgICAgICAoKyAoKiAxMCBzdW0pIChtb2R1bG8gbiAxMCkpKSkpKQogICg9IG4gKHJldi1kaWdpdHMgbikpKQoKKGRlZmluZSAocHJpbWU/IG4pCiAgKGlmIChldmVuPyBuKSAoPSBuIDIpCiAgICAobGV0IGxvb3AgKChkIDMpKQogICAgICAoaWYgKDwgbiAoKiBkIGQpKSAjdAogICAgICAgIChpZiAoemVybz8gKG1vZHVsbyBuIGQpKSAjZgogICAgICAgICAgKGxvb3AgKCsgZCAyKSkpKSkpKQoKKGRlZmluZSAocHAgaykKICAobGV0IGxvb3AgKChrIGspIChuIDIpIChucyAobGlzdCkpKQogICAgKGlmICh6ZXJvPyBrKSAocmV2ZXJzZSBucykKICAgICAgKGlmIChhbmQgKHByaW1lPyBuKSAocGFsaW5kcm9tZT8gbikpCiAgICAgICAgICAobG9vcCAoLSBrIDEpICgrIG4gMSkgKGNvbnMgbiBucykpCiAgICAgICAgICAobG9vcCBrICgrIG4gMSkgbnMpKSkpKQoKKGRpc3BsYXkgKHBwIDEwMCkpIChuZXdsaW5lKQ==