Étant donné un entier supérieur à 1, affichez le nombre de façons dont il peut être exprimé comme la somme d'un ou plusieurs nombres premiers consécutifs.
L'ordre des sommations n'a pas d'importance. Une somme peut consister en un seul nombre (donc la sortie pour tout nombre premier sera au moins 1.)
C'est du code-golf . Des règles standard s'appliquent.
Voir ce wiki OEIS pour les informations et séquences connexes, y compris la séquence elle-même OEIS A054845 .
Cas de test
2 => 1
3 => 1
4 => 0
5 => 2
6 => 0
7 => 1
8 => 1
10 => 1
36 => 2
41 => 3
42 => 1
43 => 1
44 => 0
311 => 5
1151 => 4
34421 => 6
2æR
est le même queÆR
R , 95 octets
Essayez-le en ligne!
la source
x
!cumsum
et de la configuration des premiers éléments0
pour obtenir les sommes principales consécutives. Le golf principal était juste moi essayant de faire fonctionner le dernier cas de test, et j'ai juste eu la chance qu'il soit plus court queouter
! J'ai plus qu'assez de répétition (au moins jusqu'à ce que nous ayons les exigences de représentation appropriées), et je suis toujours heureux d'aider plus de golfeurs R à avoir plus de visibilité!05AB1E , 6 octets
Code
Utilise l' encodage 05AB1E . Essayez-le en ligne!
la source
JavaScript (ES6), 92 octets
Essayez-le en ligne!
Commenté
la source
MATL,
1512 octetsEssayez-le sur MATL Online
L'initiale
E
(multipliée par 2) garantit que, pour une entrée principale, le résultat de la dernièreYs
(cumsum
) n'a pas le premier d'entrée se répétant dans la partie mise à zéro de la matrice (jouant ainsi avec le compte).Explication:
la source
Brachylog ,
149 octetsEssayez-le en ligne!
Plusieurs cas de test
(-5 octets entiers, grâce à @Kroppeb!)
Explication:
la source
⟦ṗˢ
à l'intérieur de laᶜ
boucle. J'ai obtenu cette{⟦ṗˢs+;?=}ᶜ
suite de tests: essayez-la en ligne!;?=
par?
et obtenir{⟦ṗˢs+?}ᶜ
(9 octets)Retina 0.8.2 , 68 octets
Essayez-le en ligne! Le lien inclut des cas de test plus rapides. Explication:
Exécutez le script entier en mode multiligne où
^
et$
correspondez sur chaque ligne.Convertissez deux fois en unaire, en utilisant d'abord
_
s, puis en utilisant1
s._
Supprimez tous les nombres composites de la plage.
_
_
1
la source
Husk ,
98 octets-1 octet grâce à Mr.Xcoder (utilisez l'argument nommé
¹
au lieu deS
)!Essayez-le en ligne!
Explication
la source
#¹ṁ∫ṫ↑İp
devrait enregistrer 1 octet.MATL , 16 octets
Essayez-le sur MATL Online!
Explication
la source
Python 2 ,
106104 octetsEssayez-le en ligne!
la source
Nettoyer ,
10098 octetsEssayez-le en ligne!
Définit la fonction
$ :: Int -> Int
qui fonctionne comme expliqué ci-dessous:(L'explication concerne une version plus ancienne mais logiquement identique)
la source
Perl 6 , 53 octets
Essayez-le en ligne!
Utilise l'opérateur de réduction de triangle deux fois. Le dernier cas de test est trop lent pour TIO.
Explication
la source
Japt, 17 octets
Il doit y avoir un moyen plus court que ça!
Craps sur le dernier cas de test.
Essayez-le ou exécutez tous les cas de test
Explication
la source
Java 10,
195194184182 182 octets-1 octet grâce à @ceilingcat .
-10 octets grâce à @SaraJ .
Essayez-le en ligne.
Explication:
C'est fondamentalement similaire à la réponse de Jelly ou 05AB1E , juste 190 octets de plus .. XD
Voici une comparaison pour chacune des parties, ajoutée juste pour le plaisir (et pour voir pourquoi Java est si verbeux, et ces langages de golf sont si puissants):
n->{}
[2, n]
: (Gelée: 2 octets)ÆR
; (05AB1E: 2 octets)ÅP
; (Java 10: 95 octets)var L=new java.util.Stack();int i=1,k,x,s,r=0;for(;i++<n;){for(k=1;i%++k>0;);if(k==i)L.add(i);}
Ẇ
; (05AB1E: 1 octet)Œ
; (Java 10: 55 octets)for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
et(int)L.get(k++);
§
; (05AB1E: 1 octet)O
; (Java 10: 9 octets),s
et,s=0
ets+=
ċ
; (05AB1E: 2 octets)QO
; (Java 10: 15 octets),r=0
etr+=s==n?1:0
return r;
la source
218918
tbh en 12,5 secondes, étant donné qu'il effectuera des218918-2 = 218,916
itérations avec l'intérieur d'une boucle interne de:n
itérations pour chaque nombre premier; 1 itération pour chaque nombre pair; et quelque part entre les[2,p/2)
itérations pour chaque nombre impair (près de deux milliards d'itérations), après quoi il ajoute des19518
nombres premiers à la liste en mémoire. Et puis il bouclera unesum([0,19518]) = 190,485,921
fois de plus dans la deuxième boucle imbriquée. 2 223 570 640 itérations au total pour être exact .%i
car nous vérifions la plage[2, n]
, donc je n'aurai pas besoin de vérifieri=1
. :)Physica , 41 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Haskell , 89 octets
Essayez-le en ligne!
Alternative, 89 octets
Essayez-le en ligne!
la source