用母函数做的,似乎动规也能做
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int A[155],p1[155],p2[155];
memset(A,0,sizeof(A));
A[1]=1;A[0]=1;
for(int i=2;i<=150;i++)
{
for(int j=i+i;j<=150;j+=i)
{
A[j]=1;
}
}
for(int i=0;i<=150;i++){p1[i]=0;p2[i]=0;}
//memset(p1,0,sizeof(p1));
//memset(p2,0,sizeof(p2));
p1[0]=1;//cout<<p1[0]<<endl;
for(int i=2;i<=150;i++){//cout<<p1[0]<<endl;
if(A[i]==0){
for(int j=0;j<=150;j++){
for(int k=0;k+j<=150;k+=i){
p2[j+k]+=p1[j];
}
}
for(int j=0;j<155;j++){
p1[j]=p2[j];//cout<<p1[0]<<j<<endl;
p2[j]=0;
}
}
}
int n;
while(cin>>n)
{
int m;
while(n--){
cin>>m;
cout<<p1[m]<<endl;
}
}
return 0;
}