%I #15 Aug 07 2021 17:58:16
%S 1,3,4,7,8,9,12,15,17,19,24,25,28,31,32,35,36,39,49,51,56,57,60,63,65,
%T 68,71,72,73,76,79,96,99,100,103,113,115,120,121,124,127,128,131,136,
%U 137,140,143,145,147,152,153,156,159,193,196,199,200,201,204,207,224,227
%N Numbers m such that all lengths of runs of 0's in the binary representation of m are prime numbers.
%C Numbers with no 0's in base 2 (that is, 2^k - 1) are included.
%H Reinhard Zumkeller, <a href="/A226227/b226227.txt">Table of n, a(n) for n = 1..10000</a>
%t Select[Range@227, And @@ PrimeQ[(Length /@ Split@ IntegerDigits[#, 2])[[2 ;; ;; 2]]] &] (* _Giovanni Resta_, Jun 01 2013 *)
%t Select[Range[250],AllTrue[Length/@Select[Split[IntegerDigits[#,2]],MemberQ[ #,0]&],PrimeQ]&] (* _Harvey P. Dale_, Aug 07 2021 *)
%o (C)
%o #include <stdio.h>
%o #include <stdlib.h>
%o typedef unsigned long long U64;
%o U64 runs[] = {0,2,3,5,7,11,13,17,19,23,29,31,37,41,43}, *wr;
%o #define MemUSAGE 1ULL<<33
%o #define TOP (1ULL<<9) // <<40 ok if MemUSAGE = 1ULL<<33
%o int compare64(const void *p1, const void *p2) {
%o if (*(U64*)p1 == *(U64*)p2) return 0;
%o return (*(U64*)p1 < *(U64*)p2) ? -1 : 1;
%o }
%o void rec(U64 bits) {
%o for (U64 i = 0, b; (b = bits << runs[i]) < TOP; ++i)
%o *wr++ = b, rec(b*2+1);
%o }
%o int main() {
%o U64 *wr0 = (wr = (U64*)malloc(MemUSAGE));
%o rec(1);
%o //printf("%llu\n", wr-wr0);
%o qsort(wr0, wr-wr0, 8, compare64);
%o while (wr0<wr) printf("%llu, ", *wr0++);
%o return 0;
%o }
%o (Haskell)
%o import Data.List (group, genericLength)
%o a226227 n = a226227_list !! (n-1)
%o a226227_list = filter (all (== 1) .
%o map (a010051 . genericLength) .
%o other . tail . reverse . group . a030308_row) [1..]
%o where other [] = []; other [x] = [x]; other (x:_:xs) = x : other xs
%o -- _Reinhard Zumkeller_, Jun 05 2013
%Y Cf. A033015, A226228, A226229.
%Y Cf. A005811, A030308, A010051.
%K nonn,base
%O 1,2
%A _Alex Ratushnyak_, May 31 2013