Login
7 branches 0 tags
Ben (X13/Arch) Fixed [describe] for NFuncs 18f6460 3 years ago 707 Commits
nujel / tests / slow / euler003.nuj
#!/usr/bin/env nujel
; Prime factorization
; https://projecteuler.net/problem=3
;
; Find the largest prime factor of 600851475143

[defn prime? [v]
      [for [i 2 [int v]]
           [when [zero? [% v i]] [return #f]]]
      [return #t]]

[defn prime-factors [v]
      [def factors #nil]
      [def mv [+ 1 [int [/ v 2]]]]
      [def i 2]
      [while [<= i mv]
           [when [prime? i]
                 [while [zero? [% v i]]
                        [set! v [/ v i]]
                        [set! mv [+ 1 [int v]]]
                        [set! factors [cons i factors]]]]
            [++ i]]
      [return factors]]

[defn largest-prime-factor [v]
      [car [prime-factors v]]]

[def ret [largest-prime-factor 600851475143]]
[when [!= ret 6857]
      [throw [list :wrong-result "Wrong result" ret]]]