Skip to content

Instantly share code, notes, and snippets.

@plaster
Created July 10, 2021 10:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save plaster/2095d84b58733554a995f942b581fea2 to your computer and use it in GitHub Desktop.
Save plaster/2095d84b58733554a995f942b581fea2 to your computer and use it in GitHub Desktop.
(use srfi-42)
(use math.prime)
(define (solve N)
(let* [[v (make-vector N)]
[%%solve (^ (n k) (let [[x (vector-ref v k)]
[y (vector-ref v (- n k 1)) ]]
(max (+ x y) (* x y))))]
[%solve (^ (n) (if (zero? n) 1
(max-ec (: k n) (%%solve n k))))]
]
(do-ec (: n 0 N)
(vector-set! v n (%solve n)))
(vector-ref v (- N 1))))
(define (main args)
(let1 answer ($ solve $ string->number $ cadr args)
(print answer)
(print (mc-factorize answer))
0))
ル╹ヮ╹ルɔ MIKA:~/work
% gosh pm.scm 100
7412080755407364
(2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)
ル╹ヮ╹ルɔ MIKA:~/work
% gosh pm.scm 101
11118121133111046
(2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)
ル╹ヮ╹ルɔ MIKA:~/work
% gosh pm.scm 102
16677181699666569
(3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment