用母函数打表求出所有分组的组合数
#include<stdio.h>
#include<string.h>
int a[155],b[40],c1[155],c2[155];
int main()
{
int i,j,t,n,m,k;
a[1]=1;a[2]=0;
for(i=2;i<=150;i++)
{
if(a[i]==0)
{
for(j=i+i;j<=150;j=j+i)
{
a[j]=1;
}
}
}
j=0;
for(i=2;i<=150;i++)
if(a[i]==0)
b[j++]=i;
m=j;
c1[0]=1;
for(i=0;i<m;i++)
{
for(j=0;j<=150;j++)
{
for(k=0;k<=150;k=k+b[i])
c2[j+k]+=c1[j];
}
for(j=0;j<=150;j++)
{
c1[j]=c2[j];c2[j]=0;
}
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",c1[n]);
}
return 0;
}