Exemplo n.º 1
0
def binom_dd(n, k):
    out = []
    ee = []
    for x in range(1, k + 1):
        out += mylib.find_dividers(n - x + 1)
        if x < 2:
            continue
        ee += mylib.find_dividers(x)
    # print("+", sorted(out),"\n-", sorted(ee))
    for x in ee:
        if x in out:
            ix = out.index(x)
            out = out[:ix] + out[ix + 1:]
    return tuple(sorted(out))
Exemplo n.º 2
0
def binom_dd(n, k):
    out = []
    ee = []
    for x in range(1, k + 1):
        out += mylib.find_dividers(n - x + 1)
        if x < 2:
            continue
        ee += mylib.find_dividers(x)
    # print("+", sorted(out),"\n-", sorted(ee))
    for x in ee:
        if x in out:
            ix = out.index(x)
            out = out[:ix] + out[ix + 1 :]
    return tuple(sorted(out))
Exemplo n.º 3
0
def solve():
    result = 0
    f0 = 3 / 7
    print(3, '/', 7, '=', f0)
    print('-' * 79)
    best_result = (1, 1, 1, 1, [], [])
    for x in range(1000000, 1, -1):
        n = math.floor(f0 * x)
        f = n / x
        d = f0 - f
        if d and d < best_result[2]:
            best_result = (n, x, d, f, mylib.find_dividers(n, distinct=True), mylib.find_dividers(x, distinct=True))
            print(best_result)
    print('-' * 79)
    print(best_result)
    return best_result[0]
Exemplo n.º 4
0
def solve():
    result = 0
    f0 = 3 / 7
    print(3, '/', 7, '=', f0)
    print('-' * 79)
    best_result = (1, 1, 1, 1, [], [])
    for x in range(1000000, 1, -1):
        n = math.floor(f0 * x)
        f = n / x
        d = f0 - f
        if d and d < best_result[2]:
            best_result = (n, x, d, f, mylib.find_dividers(n, distinct=True),
                           mylib.find_dividers(x, distinct=True))
            print(best_result)
    print('-' * 79)
    print(best_result)
    return best_result[0]
Exemplo n.º 5
0
def get_totient(n):
    dd = mylib.find_dividers(n, distinct=True)
    phi = n - 1
    print(dd)
    for d in dd:
        if d == n:
            continue
        phi -= n / d - 1
    print(n, phi)
    return n / phi
Exemplo n.º 6
0
def count_fractions_for_denominator(d):
    dd = mylib.find_dividers(d, distinct=True)
    if len(dd) == 1:
        if dd[0] == d:
            return d - 1
        return int((dd[0] - 1) * d / dd[0])

    out = d
    for x in dd:
        out = (x - 1) * out / x
    return out
Exemplo n.º 7
0
def count_fractions_for_denominator(d):
    dd = mylib.find_dividers(d, distinct=True)
    if len(dd) == 1:
        if dd[0] == d:
            return d - 1
        return int((dd[0] - 1) * d / dd[0])

    out = d
    for x in dd:
        out = (x - 1) * out / x
    return out
Exemplo n.º 8
0
 def find(n):
     print(n)
     r = dict()
     for i in range(1, n + 1):
         dd = mylib.find_dividers(i, distinct=True)
         if len(dd) != 2:
             continue
         ix = 'x'.join([str(x) for x in dd])
         r[ix] = i
         print(i, ix)
     return sum([r[x] for x in r])
Exemplo n.º 9
0
 def find(n):
     print(n)
     r = dict()
     for i in range(1, n + 1):
         dd = mylib.find_dividers(i, distinct=True)
         if len(dd) != 2:
             continue
         ix = 'x'.join([str(x) for x in dd])
         r[ix] = i
         print(i, ix)
     return sum([r[x] for x in r])
Exemplo n.º 10
0
def solve():
    a = 0
    for a in range(1000, 1000000):
        d = mylib.find_dividers(a, distinct=True)
        if len(d) < 4:
            continue
        c = False
        e = []
        for b in range(a + 1, a + 4):
            dd = mylib.find_dividers(b, distinct=True)
            if len(dd) < 4:
                c = True
                break
            e.append(str(b) + ' ' + str(dd))
        if len(e) > 2:
            print(a, d, e)
        if not c:
            break

    return a
Exemplo n.º 11
0
 def make_primes(self):
     self.rr = []
     for x in self.ss:
         print(x, ':')
         for y in (1, 3, 7, 9):
             r = 10 * x + y
             if r in self.pp:
                 # if mylib.is_prime(r):
                 print('+', r, 'is prime')
                 self.rr.append(r)
             else:
                 print('-', r, 'is NOT prime', mylib.find_dividers(r))
     return self
Exemplo n.º 12
0
def count_fractions_old(v):
    for i in range(0, v + 1):
        if len(dividers_hash) <= i:
            dividers_hash.append(set(mylib.find_dividers(i, distinct=True)))
    print('hash constructed to', len(dividers_hash) - 1)
    out = 0
    for d in range(2, v + 1):
        for n in range(1, d):
            r = is_proper_fraction(n, d)
            out += r
            if not d % 1000 and not n % 1000:
                print(n, '/', d, out)
                # print(n, '/', d, '=', r)
    return out
Exemplo n.º 13
0
def count_fractions_old(v):
    for i in range(0, v + 1):
        if len(dividers_hash) <= i:
            dividers_hash.append(set(mylib.find_dividers(i, distinct=True)))
    print('hash constructed to', len(dividers_hash) - 1)
    out = 0
    for d in range(2, v + 1):
        for n in range(1, d):
            r = is_proper_fraction(n, d)
            out += r
            if not d % 1000 and not n % 1000:
                print(n, '/', d, out)
                # print(n, '/', d, '=', r)
    return out
Exemplo n.º 14
0
 def is_hamming_brute(n):
     t = mylib.totient(n)
     dd = mylib.find_dividers(t, distinct=True)
     # print(n, t, max(dd))
     return max(dd) < 6
Exemplo n.º 15
0
    return out


def ww_to_n(w_list):
    out = 1
    for x in w_list:
        out *= w_list[x] + 1
    return out


m = 0
s = 2 * 3 * 5 * 7
for n in range(s, 1000, s):
    if mylib.is_prime(n):
        continue
    pd = mylib.find_dividers(n)
    if len(pd) < 4:
        continue
    dd = mylib.find_composite_dividers(n)
    print(n, len(dd), dd)
    ss = set()
    for a in dd:
        for b in dd:
            if b > a:
                continue
            if mylib.find_gcd(a, b) > 1:
                continue
            z = a + b
            x = round(n * z / b)
            y = round(n / a) * z
            print(a, b, x, y, x * y / (x + y))
Exemplo n.º 16
0
def is_proper_fraction(n, d):
    return n and n < d and not \
        len(set(mylib.find_dividers(n, distinct=True)) & set(mylib.find_dividers(d, distinct=True)))
Exemplo n.º 17
0
    return out


def ww_to_n(w_list):
    out = 1
    for x in w_list:
        out *= w_list[x] + 1
    return out


m = 0
s = 2 * 3 * 5 * 7
for n in range(s, 1000, s):
    if mylib.is_prime(n):
        continue
    pd = mylib.find_dividers(n)
    if len(pd) < 4:
        continue
    dd = mylib.find_composite_dividers(n)
    print(n, len(dd), dd)
    ss = set()
    for a in dd:
        for b in dd:
            if b > a:
                continue
            if mylib.find_gcd(a, b) > 1:
                continue
            z = a + b
            x = round(n * z / b)
            y = round(n / a) * z
            print(a, b, x, y, x * y / (x + y))
Exemplo n.º 18
0
 def get_common_dividers():
     return list(set(mylib.find_dividers(abs(self.n))).intersection(
             set(mylib.find_dividers(self.d))))
Exemplo n.º 19
0
 def is_hamming_brute(n):
     t = mylib.totient(n)
     dd = mylib.find_dividers(t, distinct=True)
     # print(n, t, max(dd))
     return max(dd) < 6