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)
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)
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)
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
def testSpecialFactors() : #f = primes.factors(37156) #f = primes.factors(576081) f = primes.factors(759) print f print specialFactors.specialFactors(f)