Sha256: e677547b8f1113b47942af38a7b0dfbd1a4ec064a26d8271fe801484fadb4b7e

Contents?: true

Size: 543 Bytes

Versions: 162

Compression:

Stored size: 543 Bytes

Contents

exception NotAPositiveInteger

datatype classification = Abundant | Deficient | Perfect

fun sigma n =
  let
    fun loop i =
      if i * i > n
      then 0
      else if n mod i <> 0
           then loop (i + 1)
           else if n div i = i
                then i + loop (i + 1)
                else i + (n div i) + loop (i + 1)
  in
    loop 1
  end

fun classify n =
  if n < 1
  then raise NotAPositiveInteger
  else
    case Int.compare (sigma n, 2 * n) of
      GREATER => Abundant
    | LESS    => Deficient
    | _       => Perfect

Version data entries

162 entries across 162 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.179 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.178 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.177 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.176 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.175 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.174 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.173 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.172 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.171 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.170 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.169 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.167 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.166 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.165 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.164 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.163 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.162 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.161 tracks/sml/exercises/perfect-numbers/example.sml
trackler-2.2.1.160 tracks/sml/exercises/perfect-numbers/example.sml