예제 #1
0
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)
예제 #2
0
파일: p0401.py 프로젝트: khmacdonald/Misc
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("")
예제 #3
0
파일: p0401.py 프로젝트: khmacdonald/Misc
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("")
예제 #4
0
파일: p0127.py 프로젝트: khmacdonald/Misc
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)
예제 #5
0
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
예제 #6
0
파일: p0127.py 프로젝트: khmacdonald/Misc
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)
예제 #7
0
파일: p0070.py 프로젝트: khmacdonald/Misc
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)
예제 #8
0
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)
예제 #9
0
파일: p0146.py 프로젝트: khmacdonald/Misc
def plist ( n ):
    sv = my_euler.fast_sieve(n)
    isp = [0]*n
    for p in sv:
        isp[p] = 1
    return sv, isp