Java 10, 195 194 184 182 bayt
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;}
@Ceilingcat sayesinde -1 bayt . @SaraJ
sayesinde -10 bayt .
Çevrimiçi deneyin.
Açıklama:
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
Temel olarak Jelly veya 05AB1E cevaplarına benzer , sadece 190 bayt daha fazla .. XD
Burada, her parça için bir karşılaştırma, sadece eğlence için eklendi (ve Java'nın neden bu kadar ayrıntılı olduğunu ve bu golf dillerinin bu kadar güçlü olduğunu görmek için):
- Girdiyi alın: (Jelly: 0 bayt) üstü kapalı ; (05AB1E: 0 bayt) dolaylı olarak ; (Java 10: 5 bayt)
n->{}
- Aralıkta bir primer listesi oluşturun
[2, n]
: (Jelly: 2 bayt) ÆR
; (05AB1E: 2 bayt) ÅP
; (Java 10: 95 bayt)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);}
- Tüm sürekli alt listeleri alın: (Jelly: 1 byte)
Ẇ
; (05AB1E: 1 bayt) Œ
; (Java 10: 55 bayt) for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
ve(int)L.get(k++);
- Her alt listeyi toplayın: (Jöle: 1 bayt)
§
; (05AB1E: 1 bayt) O
; (Java 10: 9 bayt) ,s
ve ,s=0
ves+=
- Girdiye eşit olanları sayın: (Jelly: 1 byte)
ċ
; (05AB1E: 2 bayt) QO
; (Java 10: 15 bayt) ,r=0
ver+=s==n?1:0
- Sonuç çıktısı: (Jöle: 0 bayt) dolaylı olarak ; (05AB1E: 0 bayt) dolaylı olarak ; (Java 10: 9 bayt)
return r;
2æR
ile aynıÆR