def s(n): l = decompose_tout(n, l_8) maxi = 0 for p, k in l: m = f(p, k) if m > maxi: maxi = m return maxi
def aux(n): l = [] for a in range(1, n + 1): if n % a == 0: for o, i in decompose_tout(a): if i < 3: break else: l.append(a) return l
def circumference(n): # give the number of x, y such that x**2+y**2 = n l = decompose_tout(n) B = 1 for p, a in l: if p == 2: continue if p % 4 == 1: B *= a + 1 elif a % 2 == 1: return 0 return B * 4
def nb_ok(n): l = decompose_tout(n, l_p) n_l = len(l) l2 = [] nb_div = 0 for i in range(n_l): l2.append(list(range(l[i][1] + 1))) for c in product(*l2): a = 1 for i in range(n_l): a *= l[i][0]**c[i] if 3 * a**2 - n > 0: nb_div += 1 return nb_div
def decompose_B(n, d, df): ln = decompose_tout(n, lp) for p, a in ln: if p in d: d[p] += a * n else: d[p] = a * n if p in df: df[p] += a else: df[p] = a for p in df: d[p] -= df[p] return sigma(d)
def s(n): if n in l_set: return n d = dict(decompose_tout(n, l)) nb_tot = sum(d.values()) m = 1 nb = 0 while nb < nb_tot: m += 1 for p in d: mm = m while mm % p == 0 and d[p] > 0: mm //= p nb += 1 d[p] -= 1 return m
from Tools import decompose_tout, bezout, numpy_sieve l7 = numpy_sieve(10**7) a = 1 mod = 1000000087 ss = 0 d = {} for n in range(2, 10**7 + 1): lp = decompose_tout(n, l7) for p, i in lp: if p in d: a *= bezout(mod, 1 + 2 * d[p])[0] d[p] += i a *= 1 + 2 * d[p] else: d[p] = i a *= 1 + 2 * d[p] a %= mod ss += a ss %= mod print(ss) # sol = 416146418
def div(n): ll = decompose_tout(n) for p_a in f(ll): yield compute(p_a)
# %% Problem 245 # C(n) can not be an unit fraction if n = p^k * a with k > 1 and p prime from Tools import is_prime, phi, decompose_tout def unit_co_resilience(n): return (n - 1) % (n - phi(n)) == 0 s = 0 for i in range(2, 2 * 10**11 + 1): if not is_prime(i): if unit_co_resilience(i): s += i l = [b for a, b in decompose_tout(i)] if l.count(1) != len(l): print(i)
k = 1 a = 3 * c - k # that is the sol. b = 7 * c - 2 * k # gcd(b, a) = gcd(b-2a, a) = gcd(c, 3c-1)=gcd(c, c-1)=1 # sol = 428570 # %% Problem 72 d = dict() l_erato = numpy_sieve(10**6) for i in l_erato: d[i] = i - 1 s = 0 for i in range(2, 10**6 + 1): ll = decompose_tout(i, l_erato) p = 1 for i, k in ll: p *= (i**(k - 1)) * d[i] s += p # %% Problem 73 def gcd(a, b): if a < b: r = b % a return gcd(a, r) elif b == a: return b elif b == 0:
def nb_div(n): l2 = decompose_tout(n, primes) a = 1 for c in l2: a *= c[1] + 1 return a