def combinatorial_form(n):
	return(find_combos(prime_factor_it(n)))
			#acc.append(n/factor_start)
			count += 2
		factor_start += 1

	#return sorted(set(acc))
	return count

def coprimes(n,cache=None):
	nth_triangle = triangle_closed_form(n)
	count_n = combinatorial_form(n)
	count_n_p_1 = combinatorial_form(n+1)
	return nth_triangle, count_n + count_n_p_1 - 1
	
if __name__ == "__main__":
	import sys
	sys.setrecursionlimit(200000)
	print "{0} has {1} factors, {2} has {3} factors".format(72, find_combos(prime_factor_it(72)), 73, find_combos(prime_factor_it(73)))
	print "{0}*{1} has {2} factors".format(72,73, find_combos(prime_factor_it(72) + prime_factor_it(73)))
	print "{0} has {1} factors".format(triangle_closed_form(72),combinatorial_form(triangle_closed_form(72)))
	print prime_factor_it(76576500)
	print combinatorial_form(76576500)
	cache = {}
	for x in range(0,100):
		#triangle, factors = coprimes(x)
		if x ==  72:
			pass
			#print "{0}th triangle number = {1}, with factor count {2}".format(x, triangle, factors)

	import pprint
	#pprint.pprint(cache)