title: Determining Practical Numbers
body: <p>So I am given a fraction and must determine if the denominator is a practical number. Description of a practical number: <a href="https://en.wikipedia.org/wiki/Practical_number" rel="nofollow noreferrer">What is a practical number?</a>
  <p>I already have a function that returns all the factors of the number:
  <p></p>
  
  <pre><code>def factorFinder(x):
      #Pre: Valid Integer for students
      #Post: Returns list of factors for that number
      #Takes the number of students as argument and returns all factors for that number
      lst = []
      for i in range(1, x+1):
          if x % i == 0:
              lst.append(i)
      return(lst)
  </code></pre>
  
  <p><p>
  and a function that given a list of factors as arguments returns a list of sums of all its sublists:
  <p></p>
  
  <pre><code>import itertools
  def sumsOfSublists(lst):
      # Pre: a non-empty list
      # Post: returns a list of sums of all possible list sublists of length &gt;= 2
      # given a list, returns a sorted list containing sums of
      # all combinations of sublists of length 2..list_length
      sumList = []
      for i in range(2, len(lst)+1):
         zlist = list(itertools.combinations(lst,i))
         for el in zlist:
             sumList.append(sum(el))
      return sorted(sumList)
  </code></pre>
  
  <p>I don't know how to go about testing if the number is practical or not. I don't really understand the concept of a "practical number" even after reading about it on multiple websites. So I guess really, this is more of a math question if anything.
  <p>Also given two number I need to print out the egyptian fractions for them. (i.e) given 7/8 should print the following: (1/2)+(1/4)+(1/8). All numerators must be 1.</p>