这么多天都没有人做,我把答案沾出来,也希望可以有人给出更好的的代码
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int checker(int x);
int main()
{
int m, n;
cout<<"\nInput:\n";
cin>>m>>n;
if(m<0 || n<0 || m<n){
cout<<"m>n>0";
cout<<"\nPress anykey to exit...";
getch();
return 1;
}
int data[100], *p[100];
int s=0;
for(int i=0; i<m; i++)
cin>>data[i];
for(int v=0; v<n; v++)
p[v] = data+v;
do{
int sum=0;
for(i=0; i<n; i++)
sum += *(p[i]);
if(checker(sum))
s++;
if(p[n-1]==data+m-1){
int a = n - 2, b = m - 2;
do{
if(p[a] != data+b)
break;
if(a==0)
goto pri;
a--;
b--;
}while(1);
p[a]++;
for(v=a+1, i=1; v<n; v++, i++)
p[v] = p[a] + i;
}
else
p[n - 1]++;
}while(1);
pri:
cout<<"\nOutput:\n"<<s;
getch();
return 0;
}
int checker(int x)
{
for(int i=2; i<=int(sqrt(x)+1); i++)
if(x % i == 0)
return 0;
return 1;
}