title: Find Minimum Sum Factors Number
signature: findMinimumSumFactorsNumber :: Integer -> Double
  findMinimumSumFactorsNumber num = 
test_code: import Text.Printf
  import Control.Exception (catch, SomeException)
  import Data.Typeable
  import qualified Data.List as List
  import qualified Data.Map as Map
  import qualified Data.Set as Set
  
  -- SOLUTION CODE
  -- ============================================
  
  PLACEHOLDER_CODE_BODY
  
  -- TESTING CODE 
  -- ============================================
  validateSolution :: Double -> Double -> Bool
  validateSolution actual expected = do
      (abs (actual-expected)) < 1e-06
  
  driver :: Integer -> Double -> String
  driver num expected = do
      if (validateSolution (PLACEHOLDER_FN_NAME num) expected)
          then "PASSED"
      else "FAILED"
  
  main = do
      printf "TEST-0...%s\n" (driver (83) (83.0) )
  
      printf "TEST-1...%s\n" (driver (88) (17.0) )
  
      printf "TEST-2...%s\n" (driver (60) (12.0) )
  
      printf "TEST-3...%s\n" (driver (6) (5.0) )
  
      printf "TEST-4...%s\n" (driver (26) (15.0) )
  
      printf "TEST-5...%s\n" (driver (98) (17.0) )
  
      printf "TEST-6...%s\n" (driver (38) (21.0) )
  
      printf "TEST-7...%s\n" (driver (90) (13.0) )
  
      printf "TEST-8...%s\n" (driver (76) (23.0) )
  
      printf "TEST-9...%s\n" (driver (66) (16.0) )
  
source_py: def find_minimum_sum_factors_number(num):
      sum = 0
      i = 2
      while ((i * i) <= num):
          while ((num % i) == 0):
              sum += i
              num /= i
          i += 1
      sum += num
      return sum
source_cpp: int find_minimum_sum_factors_number(int num) {
    int sum = 0;
    for ( int i = 2;
    i * i <= num;
    i ++ ) {
      while ( num % i == 0 ) {
        sum += i;
        num /= i;
      }
    }
    sum += num;
    return sum;
  }