project-euler / OCaml / Euler023.ml

(******************************************************************************
 **                                                                          **
 **  Project Euler #23                                                       **
 **                                                                          **
 **  Copyright (c) 2010, Taylor Venable.  All rights reserved.               **
 **  Released under the terms of the simplified (2-clause) BSD license.      **
 **                                                                          **
 ******************************************************************************)

include List
include TaylorList
include TaylorNumber
include TaylorMisc

open TaylorMisc

module Euler023 : sig
  val is_abundant : int -> bool
end = struct
  let sum l = List.fold_right (fun (n, m) b -> n + m + b) l 0
  let is_abundant n =
    if TaylorNumber.is_prime n then
      false
    else
      sum (TaylorNumber.factors n) > n
  let solution () =
    List.filter (not <<- is_abundant) (TaylorList.iota 1 28123);;
end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.