用母函数打表求出所有分组的组合数
#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; }