a000043 = [ 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281, 3217, 4253 ] \\, 4423, 9689, 9941, 11213, 19937, 21701, 23209 a000668 = apply(x -> 2^x-1, a000043) mx = a000668[#a000668] is(n) = { my (sig=1, tau=1); for (i=1, oo, if (n==1, for (k=1, oo, my (d=sig-tau^k); if (d==0, return (k), d<0, return (0); ); ); ); my (m=a000668[i]); if (n%m==0, n/=m; sig*=1+m; tau*=2; ); ); } allocate mem(2^30); { vv = [1]; for (k=1, #a000668, vv=setunion(vv, select(v -> v<=mx, vv*a000668[k])); ); vv = select(sign, apply(is, vv)); apply (v -> print(n++ " " v), vv); } quit