C語言源碼: [cpp] #include<stdio.h> #include<limits.h> int b[1010],s[1010],top; void pri() { int i,j; top=0; i=2; for(i=2;i<1010;i++) b[i]=0; for(i=2;i<1010;i++) { if(b[i]==0) { s[top++]=i; for(j=i;j*i<1010;j++) b[j*i]=1; } } } int main() { int n,a,k,pn[1000],pa[1000],i,j; while(scanf("%d %d",&n,&a)!=EOF) { pri(); for(i=0;i<1000;i++) { pn[i]=0; pa[i]=0; } for(i=0;i<top;i++) { while(a%s[i]==0) { pa[s[i]]++; a/=s[i]; } if(a==1) break; } for(j=2;j<=n;j++) { k=j; for(i=0;i<top;i++) { while(k%s[i]==0) { pn[s[i]]++; k/=s[i]; } if(k==1) break; } } k=INT_MAX; for(i=0;i<1000;i++) { if(pa[i]!=0) { if(pn[i]-pa[i]<k) k=pn[i]/pa[i]; } } printf("%d\n",k); } }