#make a function to try and give the prime factorization of p-1
from primality import *

def divisors(p_1): #factors the number entered into its prime factors and powers
   divList=[]
   primeList=[]
   for d in range(2,int(p_1**(0.5))+1):
       if (simplePrime(d)):
           divList=divList+[d]
   temp=0
   for div in divList:
       temp = p_1
       count= 0
       while (temp%div==0):
           count=count+1
           temp=temp/div
       if (count>0):
           primeList=primeList+[(div,count)]
   if (primeList==[]):
       if(p_1==1):
           return []
       return [(p_1,1)]
   temp=p_1
   for div in primeList:
       while(temp%div[0]==0):
           temp=temp/div[0]
   return primeList+divisors(temp)

def listmult(list1,list2):
   result=[]
   for elem in list1:
       for elem2 in list2:
           result=result+[elem*elem2]
   return result

def expand(pList):  #makes a list of all the divisors for a given list
of prime divisors and powers
   fact=[]
   if (len(pList)==1):
       for prime in pList:
           for i in range(1,prime[1]+1):
               fact=fact+[prime[0]**i]
       return fact
   else :
       prime=pList[0]
       pList.remove(prime)
       for i in range(1,prime[1]+1):
           fact=fact+[prime[0]**i]
       recurs=expand(pList)
       return fact+listmult(fact,recurs)+recurs