cache = [1] A000961(n) = { if (#cache < n, for (v=cache[#cache]+1, oo, if (omega(v)==1, cache = concat(cache, v); if (#cache==n, break); ); ); ); return (cache[n]) } T(n,k) = { if (gcd(n,k)>1, return (-1)); my (x=1, v=0, p=1); for (i=2, oo, if (n==1 && k==1, return (v)); my (o=A000961(i)); if (gcd(o,x)==1 && omega(o)==1, if (n % o==0 && gcd(n/o, o)==1, v += p; n /= o; x *= o, k % o==0 && gcd(k/o, o)==1, v += 2*p; k /= o; x *= o ); p *= 3; ); ); }