http://acm.hdu.edu.cn/showproblem.php?pid=2161
没有什么难度,不过要注意本题2不是素数。
#include"stdio.h" #include"string.h" #include"stdlib.h" bool prime[16005]; void IsPrime() { int i,j,t; memset(prime,true,sizeof(prime)); prime[0]=prime[1]=false; prime[2]=false; prime[3]=true; for(i=4;i<=16000;i+=2) prime[i]=false; for(i=3;i<=400;i+=2) if(prime[i]) for(j=i*i;j<=16000;j+=2*i) prime[j]=false; } int main() { int n,cas=1; IsPrime(); while(scanf("%d",&n)!=EOF) { if(n<=0) break; printf("%d: ",cas++); if(prime[n]==true) printf("yes "); else printf("no "); } }