def proj(): pnum = 401 answer = 0 mx = 10**6 print("This is a poorly designed problem") sv = my_euler.fast_sieve(mx) print("") print_project_answer(pnum,answer)
def test(): mil = 10**6 mx = (10**15) sqm = int(math.sqrt(mx)) print(sqm) print(my_euler.count_dig(sqm)) print("Starting") sv = my_euler.fast_sieve(sqm) print("Factoring") f = my_euler.prime_factor(mx, sv) print("") print("Factors of %d:" % mx) print(f) print("")
def test(): mil = 10**6 mx = (10**15) sqm = int(math.sqrt(mx)) print(sqm) print(my_euler.count_dig(sqm)) print("Starting") sv = my_euler.fast_sieve(sqm) print("Factoring") f = my_euler.prime_factor(mx,sv) print("") print("Factors of %d:" % mx) print(f) print("")
def proj(): pnum = 105 answer = 0 mx = 1001 sieve = my_euler.fast_sieve(mx) cnt = 0 for a in range(1, mx - 1): for b in range(a + 1, mx): c = a + b if 1 != my_euler.gcd(a, b) or 1 != my_euler.gcd(a, c) or 1 != my_euler.gcd(b, c): continue cnt += abc_hit(a, b, sieve) answer = cnt print("") print_project_answer(pnum, answer)
def get_lists(mx): sv_max = int(math.sqrt(mx)) primes = my_euler.fast_sieve(mx) squares = [] cubes = [] fourth = [] for p in primes: a = p*p if a>mx: break squares.append(a) a = a*p if a<mx: cubes.append(a) a = a*p if a<mx: fourth.append(a) return squares, cubes, fourth
def proj(): pnum = 105 answer = 0 mx = 1001 sieve = my_euler.fast_sieve(mx) cnt = 0 for a in range(1, mx - 1): for b in range(a + 1, mx): c = a + b if 1!=my_euler.gcd(a,b) or \ 1!=my_euler.gcd(a,c) or \ 1!=my_euler.gcd(b,c): continue cnt += abc_hit(a, b, sieve) answer = cnt print("") print_project_answer(pnum, answer)
def proj2 (): ''' Way faster ''' num = 10**7 numsq = int(1.2*math.ceil(math.sqrt(num))) print("numsq = %d" % numsq) primes = my_euler.fast_sieve(numsq) k = 0 minn = num mn = num found = False answer = 8319823 print("Max Prime = %d" % (primes[len(primes)-1])) for p1 in primes: k = k+1 for p2 in primes[k:]: n = p1*p2 if n==answer: print("") print("Here n = %d" % n) if n>num: break sys.stdout.write("n = %d\r" % n) phi = (p1-1)*(p2-1) ratio = n/float(phi) if n==answer: print("") print("phi(%d) = %d, %f" % (n,phi,ratio)) if my_euler.is_permutation(n,phi): if ratio<mn: found = True mn = ratio minn = n print("") if found: print("%d results in ratio %f" % (minn,mn)) else: print("Nothing found") print(" Answer should be %d" % answer)
def proj2(): ''' Way faster ''' num = 10**7 numsq = int(1.2 * math.ceil(math.sqrt(num))) print("numsq = %d" % numsq) primes = my_euler.fast_sieve(numsq) k = 0 minn = num mn = num found = False answer = 8319823 print("Max Prime = %d" % (primes[len(primes) - 1])) for p1 in primes: k = k + 1 for p2 in primes[k:]: n = p1 * p2 if n == answer: print("") print("Here n = %d" % n) if n > num: break sys.stdout.write("n = %d\r" % n) phi = (p1 - 1) * (p2 - 1) ratio = n / float(phi) if n == answer: print("") print("phi(%d) = %d, %f" % (n, phi, ratio)) if my_euler.is_permutation(n, phi): if ratio < mn: found = True mn = ratio minn = n print("") if found: print("%d results in ratio %f" % (minn, mn)) else: print("Nothing found") print(" Answer should be %d" % answer)
def plist ( n ): sv = my_euler.fast_sieve(n) isp = [0]*n for p in sv: isp[p] = 1 return sv, isp