#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