Java 10, 195 194 184 182 byte
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 nhờ @ceilingcat .
-10 byte nhờ @SaraJ .
Hãy thử trực tuyến.
Giải trình:
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
Về cơ bản, nó tương tự như các câu trả lời của Jelly hoặc 05AB1E , chỉ hơn 190 byte .. XD
Ở đây một so sánh cho từng bộ phận, được thêm vào chỉ để giải trí (và để xem tại sao Java lại dài dòng và các ngôn ngữ chơi gôn này rất mạnh):
- Lấy đầu vào: (Jelly: 0 byte) ngầm ; (05AB1E: 0 byte) ngầm ; (Java 10: 5 byte)
n->{}
- Tạo một danh sách các số nguyên tố trong phạm vi
[2, n]
: (Jelly: 2 byte) ÆR
; (05AB1E: 2 byte)ÅP
; (Java 10: 95 byte)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);}
- Nhận tất cả các danh sách phụ liên tục: (Jelly: 1 byte)
Ẇ
; (05AB1E: 1 byte) Œ
; (Java 10: 55 byte)for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
và(int)L.get(k++);
- Tổng mỗi danh sách phụ: (Jelly: 1 byte)
§
; (05AB1E: 1 byte) O
; (Java 10: 9 byte) ,s
và,s=0
vàs+=
- Đếm những cái đó bằng đầu vào: (Jelly: 1 byte)
ċ
; (05AB1E: 2 byte) QO
; (Java 10: 15 byte),r=0
vàr+=s==n?1:0
- Xuất kết quả: (Jelly: 0 byte) ngầm ; (05AB1E: 0 byte) ngầm ; (Java 10: 9 byte)
return r;
2æR
cũng giống nhưÆR