from sympy import factorint, prevprime from operator import mul import math def A(n): return n - 2**int(math.floor(math.log(n, 2))) def b(n): return n + 1 if n<2 else prime(1 + (len(bin(n)[2:]) - bin(n)[2:].count("1"))) * b(A(n)) def a005940(n): return b(n - 1) def P(n): f = factorint(n) return sorted([f[i] for i in f]) def a046523(n): x=1 while True: if P(n) == P(x): return x else: x+=1 def a278222(n): return a046523(a005940(n + 1)) def a064216(n): f=factorint(2*n - 1) return 1 if n==1 else reduce(mul, [prevprime(i)**f[i] for i in f]) def a(n): return a278222(a064216(n))