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))
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))
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]
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
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
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])
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
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
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
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
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))
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)))
def get_common_dividers(): return list(set(mylib.find_dividers(abs(self.n))).intersection( set(mylib.find_dividers(self.d))))