好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇
1 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 2 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 3 但是num初值取0,那么就秒出,坑爹啊扯淡*/ 4 #include<stdio.h> 5 #include<string.h> 6 #include<math.h> 7 int a[200]; 8 int c1[200],c2[200]; 9 int prim(int n) 10 { 11 12 int i; 13 for(i=2;i<=sqrt(n);i++) 14 if(n%i==0) return 0; 15 return 1; 16 } 17 int main() 18 { 19 int i,j,n,m,k,t; 20 int num=0; 21 for(i=2;i<=150;i++) 22 { 23 if(i%2==0 && i>2) continue; 24 else if(prim(i)) a[num++]=i; 25 } 26 for(i=0;i<=150;i=i+2) 27 { 28 c1[i]=1; 29 } 30 for(i=2;i<=num;i++) 31 { 32 for(j=0;j<=150;j++) 33 for(k=0;k+j<=150;k=k+a[i-1])//要求构成n的是素数 34 { 35 c2[j+k]+=c1[j]; 36 } 37 for(j=0;j<=150;j++) 38 { 39 c1[j]=c2[j]; 40 c2[j]=0; 41 } 42 } 43 scanf("%d",&t); 44 while(t--) 45 { 46 scanf("%d",&n); 47 printf("%d ",c1[n]); 48 } 49 return 0; 50 }