纪念第一次在实验室,用学校配的机器,用fedora,vim,交的第一题! 再纪念一下明天考计算机网络期中,现在还没开始看呢... 线性搜索素数,然后简单的高精度取余数即可。注意的是边界情况! #include<stdio.h> #include<cstring> const int oo = 1000000; int index_[oo] ={ 0 }; int prime[78510]; int num=0; void prime2(){ int i,j; for(i=2;i<oo;i++){ if(!index_[i])prime[num++]=i; for(j=0;(j<num) && (i*prime[j]<oo);j++){ index_[i*prime[j]]=1; if(!(i%prime[j]))break; } } } char k[101]; int div( int q) { int n= strlen(k); int i; int p=0,r=0; for(i=0;i<n;i++){ p=r*10+k[i]-'0'; r=p%q; } return r; } int main(){ prime2(); int l; while(scanf("%s %d",k,&l)){ if(k[0]=='0'&& !l)break; int n=0; while(n<num&′[n]<l){//n<num! if(!div(prime[n])){ printf("BAD %d/n",prime[n]); break; } n++; } if(n>=num||prime[n]>=l)//boundary,attention! printf("GOOD/n"); } }