Java 10, 195 194 184 182 Bytes
n->{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);}for(x=L.size(),i=0;i<x;)for(k=i++,s=0;k<x;r+=s==n?1:0)s+=(int)L.get(k++);return r;}
-1 Byte dank @ceilingcat .
-10 Bytes dank @SaraJ .
Probieren Sie es online aus.
Erläuterung:
n->{ // Method with integer as both parameter and return-type
var L=new java.util.Stack();
// List of primes, starting empty
int i=1,k,x,s, // Temp integers
r=0; // Result-counter, starting at 0
for(;i++<n;){ // Loop `i` in the range [2, `n`]
for(k=1; // Set `k` to 1
i%++k>0;); // Inner loop which increases `k` by 1 before every iteration,
// and continues as long as `i` is not divisible by `k`
if(k==i) // If `k` is now still the same as `i`; a.k.a. if `i` is a prime:
L.add(i);} // Add the prime to the List
for(x=L.size(), // Get the amount of primes in the List
i=0;i<x;) // Loop `i` in the range [0, amount_of_primes)
for(s=0, // (Re)set the sum to 0
k=i++;k<x; // Inner loop `k` in the range [`i`, amount_of_primes)
r+=s==n? // After every iteration, if the sum is equal to the input:
1 // Increase the result-counter by 1
: // Else:
0) // Leave the result-counter the same by adding 0
s+=(int)L.get(k++);
// Add the next prime (at index `k`) to the sum
return r;} // And finally return the result-counter
Es ist im Grunde ähnlich wie die Gelee oder 05AB1E Antworten, nur 190 Bytes mehr .. XD
Hier ein Vergleich für jeden der Teile, hinzugefügt nur zum Spaß (und zu sehen , warum Java so ausführlich ist, und diese Golf - Sprachen sind so mächtig):
- Nehmen Sie die Eingabe: (Jelly: 0 Bytes) implizit ; (05AB1E: 0 Byte) implizit ; (Java 10: 5 Bytes)
n->{}
- Erstellen Sie eine Liste von Primzahlen im Bereich
[2, n]
: (Jelly: 2 Bytes) ÆR
; (05AB1E: 2 Bytes) ÅP
; (Java 10: 95 Bytes)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);}
- Holen Sie sich alle fortlaufenden Unterlisten: (Jelly: 1 Byte)
Ẇ
; (05AB1E: 1 Byte) Œ
; (Java 10: 55 Bytes) for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
und(int)L.get(k++);
- Summiere jede Unterliste: (Gelee: 1 Byte)
§
; (05AB1E: 1 Byte) O
; (Java 10: 9 Bytes) ,s
und ,s=0
unds+=
- Zählen Sie die Werte, die der Eingabe entsprechen: (Gelee: 1 Byte)
ċ
; (05AB1E: 2 Bytes) QO
; (Java 10: 15 Bytes) ,r=0
undr+=s==n?1:0
- Das Ergebnis ausgeben: (Jelly: 0 Bytes) implizit ; (05AB1E: 0 Byte) implizit ; (Java 10: 9 Bytes)
return r;
2æR
ist dasselbe wieÆR