예제 #1
0
def doTest(n) :
	d = {}
	nFactors = primes.primeFactors(n)
	sp = specialFactors.specialFactors(nFactors)
	for i in sp :
		y = int((n * i)/(i - n))
		if (i+y) == (i * y) / n :
			if i not in d :
				d[y] = i
	return len(d)
예제 #2
0
def doTest(n):
    d = {}
    nFactors = primes.primeFactors(n)
    sp = specialFactors.specialFactors(nFactors)
    for i in sp:
        y = int((n * i) / (i - n))
        if (i + y) == (i * y) / n:
            if i not in d:
                d[y] = i
    return len(d)
예제 #3
0
def euler141() :
	## [3,102,130,312,759,2496,2706,3465,6072,6111,8424,14004,16005,36897,37156,92385,98640,112032,117708,128040,351260,740050]) :
	s = set()
	for sqr in xrange(2, 1000*1000) :
		if primes.isPrime(sqr) : continue
		i = sqr*sqr
		print sqr, i, "\r",
		f = primes.factors(sqr)
		sp = specialFactors.specialFactors(f, sqr)
		for r in sp :
			x = r * (i - r)
			cub = CubeRoot(x)
			if cub :
				q, r2 = divmod(i, cub)
				if r == r2 :
					a = [r, q, cub]
					print sqr, i, a
					s.add(i)
					break
	print sorted(s)
	print sum(s)
예제 #4
0
import specialFactors
import primes


j = 4
max_so_far = -1
k = -1
while 1 :
	if not primes.isPrime(j) :
		f = primes.factors(j)
		sp = specialFactors.specialFactors(f, j)	
		L = len(sp)
		if L > max_so_far :
			pf = primes.primeFactors(j)
			max_so_far, k = L, j
			print k, max_so_far, pf
		if L > 1000 : break
		print j, L, "\r", 
	j += 1
print
print k, max_so_far
예제 #5
0
def testSpecialFactors() :
	#f = primes.factors(37156)
	#f = primes.factors(576081)
	f = primes.factors(759)
	print f
	print specialFactors.specialFactors(f)