uptoqdigits(n) = { maxqd = n; qchecks = 0; resforuptoqdigits = List(); process(0, 0); print(qchecks); listsort(resforuptoqdigits); resforuptoqdigits } process(n, qd) = { my(d = digits(n^3), maxlb = max(2, #d - qd + 2), qswitches = 0); qchecks++; forstep(i = #d, maxlb, -1, if(bitand(d[i],1) != bitand(d[i-1], 1), qswitches++; if(qswitches >= 2, return ); ); ); if(#Str(n) == qd, forstep(i = maxlb-1, 2, -1, if(bitand(d[i],1) != bitand(d[i-1], 1), qswitches++; ); ); if(qswitches <= 1, listput(resforuptoqdigits, n); ); ); my(cqd = qd + 1); if(cqd > maxqd, return); for(i = 0, 9, process(10^qd * i + n, cqd); ); }