this_num=i
        for j in range(len_n):
            combo.append(this_num/base_n_list[j])
            this_num = this_num % base_n_list[j]
        yield combo

b_get_pfd_ceil_pow = 1
b_create_combos = 1
b_list_combos = 0
b_run_main = 0

#get R for 2*3*5*7
n = 2*3*5*7


pfd = prime_fact_decomp(n)
pfd_list = [a for (a,b) in pfd]
p_list = [x for x in primes(n) if x not in pfd_list]
p_list.sort(reverse=True)
print len(p_list)

if b_get_pfd_ceil_pow:
    pfd_ceil_pow = []
    #get min a st p**a > n
    for p in p_list:
        pfd_ceil_pow.append(int(floor(log(n,p))))
#print len(pfd_ceil_pow)

if b_create_combos:

    all_combo = []
'''
Created on Oct 31, 2015

@author: Trader
'''
from PE003_Largest_Prime_Factor import prime_fact_decomp
import numpy as np

agg_factors = []
agg_counts = []

for i in range(1,20):
    (factors, counts) = np.unique(prime_fact_decomp(i),return_counts=True)
    print (i, factors, counts)
    for j in range(len(factors)):
        try:
            fact_index = agg_factors.index(factors[j])
        except ValueError:
            fact_index = -1
        
        if fact_index == -1:
            agg_factors.append(factors[j])
            agg_counts.append(counts[j])
        else:
            agg_counts[fact_index] = max(agg_counts[fact_index],counts[j])

print (agg_factors)
print (agg_counts)

small_mult = 1
for i in range(len(agg_factors)):