nodes: 0, module; 1, function_definition; 2, function_name:factors; 3, parameters; 4, block; 5, identifier:n; 6, expression_statement; 7, return_statement; 8, comment:"""
      Computes all the integer factors of the number `n`
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_alg import *  # NOQA
          >>> import utool as ut
          >>> result = sorted(ut.factors(10))
          >>> print(result)
          [1, 2, 5, 10]
  
      References:
          http://stackoverflow.com/questions/6800193/finding-all-the-factors
      """; 9, call; 10, identifier:set; 11, argument_list; 12, call; 13, identifier:reduce; 14, argument_list; 15, attribute; 16, generator_expression; 17, identifier:list; 18, identifier:__add__; 19, list; 20, for_in_clause; 21, if_clause; 22, identifier:i; 23, binary_operator:n // i; 24, identifier:i; 25, call; 26, comparison_operator:n % i == 0; 27, identifier:n; 28, identifier:i; 29, identifier:range; 30, argument_list; 31, binary_operator:n % i; 32, integer:0; 33, integer:1; 34, binary_operator:int(n ** 0.5) + 1; 35, identifier:n; 36, identifier:i; 37, call; 38, integer:1; 39, identifier:int; 40, argument_list; 41, binary_operator:n ** 0.5; 42, identifier:n; 43, float:0.5
code: def factors(n):
      """
      Computes all the integer factors of the number `n`
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_alg import *  # NOQA
          >>> import utool as ut
          >>> result = sorted(ut.factors(10))
          >>> print(result)
          [1, 2, 5, 10]
  
      References:
          http://stackoverflow.com/questions/6800193/finding-all-the-factors
      """
      return set(reduce(list.__add__,
                        ([i, n // i] for i in range(1, int(n ** 0.5) + 1) if n % i == 0)))