f = lambda n:bin(n^n/2).count('1') for n in (0, 1, 42, 97, 170, 255, 682, 8675309, 4812390, 178956970, 2863311530): print '%10d -> %2d' % (n, f(n))
Standard input is empty
0 -> 0 1 -> 1 42 -> 6 97 -> 3 170 -> 8 255 -> 1 682 -> 10 8675309 -> 11 4812390 -> 14 178956970 -> 28 2863311530 -> 32