popcount(n) := block( bits: makelist(bit_onep(n, i), i, 0, bit_length(n)), length(sublist(bits, "+")) )$ makelist(popcount(3^i), i, 0, 29); evilp(n) := evenp(popcount(n))$ odiousp(n) := oddp(popcount(n))$ firstnums(lim, pred, name) := block( sprint("First", lim, name, "numbers:"), newline(), count: 0, n: 0, while count