; multiples of 5
(define (mult5? n)
(let outer ((n (abs n)) (power5 (list 5)))
(if (< (* (car power5) 5) n)
(outer n (cons (* (car power5) 5) power5))
(let inner ((n n) (power5 power5))
(if (null? power5)
(zero? n)
(if (< n (car power5))
(inner n (cdr power5))
(inner (- n (car power5)) power5)))))))
(display (mult5? 987)) (newline)
(display (mult5? 985)) (newline)
OyBtdWx0aXBsZXMgb2YgNQoKKGRlZmluZSAobXVsdDU/IG4pCiAgKGxldCBvdXRlciAoKG4gKGFicyBuKSkgKHBvd2VyNSAobGlzdCA1KSkpCiAgICAoaWYgKDwgKCogKGNhciBwb3dlcjUpIDUpIG4pCiAgICAgICAgKG91dGVyIG4gKGNvbnMgKCogKGNhciBwb3dlcjUpIDUpIHBvd2VyNSkpCiAgICAgICAgKGxldCBpbm5lciAoKG4gbikgKHBvd2VyNSBwb3dlcjUpKQogICAgICAgICAgKGlmIChudWxsPyBwb3dlcjUpCiAgICAgICAgICAgICAgKHplcm8/IG4pCiAgICAgICAgICAgICAgKGlmICg8IG4gKGNhciBwb3dlcjUpKQogICAgICAgICAgICAgICAgICAoaW5uZXIgbiAoY2RyIHBvd2VyNSkpCiAgICAgICAgICAgICAgICAgIChpbm5lciAoLSBuIChjYXIgcG93ZXI1KSkgcG93ZXI1KSkpKSkpKQoKKGRpc3BsYXkgKG11bHQ1PyA5ODcpKSAobmV3bGluZSkKKGRpc3BsYXkgKG11bHQ1PyA5ODUpKSAobmV3bGluZSk=