perl -e "print eval join '+',grep{((scalar @{[((sprintf '%b',$_)=~/1/g)]}))%2==0} 0..$ARGV[0];" 10 33 #### perl -e "print eval join '+',grep{(0.5*(4*$_+1-(-1)**scalar @{[((sprintf '%b',$_)=~/1/g)]}))%2==0} 0..$ARGV[0];" 10 33 #### use strict; use warnings; my $max = $ARGV[0]||10; my $total; my $num=0; while ( evil_numbers($num)<= $max) {$total += evil_numbers($num);$num++} print "$max gives a total of $total\n\n"; sub evil_numbers{ # https://oeis.org/A001969 my $n = shift; # nasty binary weight: https://oeis.org/A000120 return 0.5 * (4 * $n + 1 - (-1) **scalar @{[((sprintf '%b',$n)=~/1/g)]} ); }