JavaScript (ES6), 123 118 115 111 104 96 octets
4 octets enregistrés grâce à @Arnauld
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>F(n-1,G(n,a=[0,0,n])||alert(n))
Une combinaison de trois fonctions récursives typiques. Alerte la séquence dans l'ordre inverse et se termine sur une erreur "trop de récursivité".
Extrait de test
(modifié pour sortir sur la page)
alert = s => O.textContent += s + "\n"
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>F(n-1,G(n,a=[0,0,n])||alert(n))
F(1000)
<pre id=O></pre>
La fonction principale peut renvoyer un tableau de 104 octets:
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>n?F(n-1).concat(G(n,a=[0,0,n])?[]:n):[]
Il peut également être non récursif au prix d'un autre octet:
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
n=>[for(_ of Array(n))if(!G(--n,a=[0,0,n]))n]
Voici celle avec laquelle j'ai commencé: (6 octets enregistrés grâce à @Arnauld)
P=(n,x=n)=>n>1&--x<2||n%x&&P(n,x)
G=n=>n?G(n>>1,o+=n%2,t++):P(o)&P(t-o)
F=n=>n?F(n-1).concat(P(n)&G(n,o=t=0)?n:[]):[]
J'ai essayé de jouer au golf plus loin et j'ai réussi à le faire en 104 octets, puis j'ai réalisé que j'avais déjà trouvé cette solution (c'est au bas de la réponse). Tu ne détestes pas quand ça arrive? : P
Une tentative non récursive de la fonction principale (encore une fois, même nombre d'octets):
n=>[for(i of Array(n))if(P(--n)&G(n,o=t=0))n]
Celui-ci prend la route facile de compter combien de 0 et de 1 sont dans la représentation binaire:
F=n=>n?F(n-1).concat([n,(G=x=>n.toString(2).split(x).length-1)(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
Même chose avec une compréhension de tableau:
n=>[for(_ of Array(n))if(![--n,(G=x=>n.toString(2).split(x).length-1)(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1))n]
Celui-ci prend un chemin un peu plus difficile pour faire la même chose:
F=n=>n?F(n-1).concat([n,(G=(x,w=n)=>w&&G(x,w>>1)+(w%2==x))(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
Et celui-ci emprunte une autre voie connexe aussi courte que l'original:
F=n=>n?F(n-1).concat([n,o=(G=x=>x&&x%2+G(n>>++t))(n,t=0),t-o].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
Encore une fois, vous pouvez jouer au golf 8 octets en le faisant alerter la séquence dans l'ordre inverse:
F=n=>F(n-1,[n,o=(G=x=>x&&x%2+G(n>>++t))(n,t=0),t-o].some(n=>(P=x=>n%--x?P(x):x)(n)-1)||alert(n))