fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n , k;
  4. int X[100];
  5. int nt[501];
  6. vector<vector<int>> v;
  7. void checknt(int n, int nt[]) {
  8. for (int i = 0; i <= n; i++) {
  9. nt[i] = 1;
  10. }
  11. nt[0] = 0;
  12. nt[1] = 0;
  13. for (int i = 2; i <= sqrt(n); i++) {
  14. if (nt[i]) {
  15. for (int j = i * i; j <= n; j += i) {
  16. nt[j] = 0;
  17. }
  18. }
  19. }
  20. }
  21. void khoitao(){
  22. cin >> n >> k ;
  23. }
  24. void Try(int i,int bd , int sum){
  25. for(int j = bd ; j <= n ; j++){
  26. if(nt[j]){
  27. X[i] = j;
  28. if(i == k && sum + j == n){
  29. vector<int> tmp(X+1,X+i+1);
  30. v.push_back(tmp);
  31. }
  32. else if(i < k && sum + j < n ){
  33. Try(i+1,j+1,sum+j);
  34. }
  35. }
  36. }
  37. }
  38. int main(){
  39. khoitao();
  40. checknt(501,nt);
  41. Try(1,1,0);
  42. if(v.empty()){
  43. cout << "NOT FOUND";
  44. return 0;
  45. }
  46. else{
  47. sort(v.begin() , v.end());
  48. for(vector<int> p : v){
  49. for(int i = 0 ; i < p.size() ; i++){
  50. cout << p[i];
  51. if(i < p.size() - 1){
  52. cout << " + ";
  53. }
  54. }
  55. cout << endl;
  56. }
  57. }
  58. }
Success #stdin #stdout 0.01s 5304KB
stdin
91 3
stdout
3 + 5 + 83
3 + 17 + 71
3 + 29 + 59
3 + 41 + 47
5 + 7 + 79
5 + 13 + 73
5 + 19 + 67
7 + 11 + 73
7 + 13 + 71
7 + 17 + 67
7 + 23 + 61
7 + 31 + 53
7 + 37 + 47
7 + 41 + 43
11 + 13 + 67
11 + 19 + 61
11 + 37 + 43
13 + 17 + 61
13 + 19 + 59
13 + 31 + 47
13 + 37 + 41
17 + 31 + 43
19 + 29 + 43
19 + 31 + 41
23 + 31 + 37