Like Jonathan Allan, I'm not sure if it's actually necessary to check for 0 bitflips. If it turns out that no prime number has all of its bitflips beresult in composite numbers, the 0+
can be removed.
Explanation
ri Take an integer from input (n)
{ Filter out all numbers in the range 0...n-1 for which
the following block is false
_ Duplicate the number
2b, Convert to binary, get the length
, Range from 0 to length-1
2\f# Map each number in that range as a power of 2
results in all powers of 2 less than or equal to n
_m* Cartesian product with itself
::| Reduce each Cartesian pair with btiwse OR
results in all numbers that have 1-2 1 bits in binary
0+ Add 0 to that list
f^ Bitwise XOR the number we're checking with each of these
This computes all the bitflips
:mp Map each result to 0 if it's prime, 1 if it's composite
:+! Take the sum of the list, check if it's 0
If it is, then none of the results were prime
}, (end of filter block)
2> Discard the first 2 numbers, since 0 and 1 always pass
p Print the list nicely