// http://acm.hdu.edu.cn/showproblem.php?pid=2161 // 这是个简单的判断是不是素数的题目,这里有一点要注意:这里的2当作非素数 #include<stdio.h> #include<string.h> int prime[16001]; void fun() { int i,j; memset(prime,1,sizeof(prime)); for(i=2;i<=16000;i++) if(prime[i]) { for(j=2;i*j<=16000;j++) // 如果不是素数的话,就被赋值为0 prime[i*j]=0; } prime[1]=0;prime[2]=0; } int main() { int n,pos=1; fun(); while(scanf("%d",&n)!=EOF && n>=1) // 这里也是一个很坑爹的地方,n一定要大于0,开始写了n!=0 wa,一改,就对了 { if(prime[n]) printf("%d: yes\n",pos); else printf("%d: no\n",pos); pos++; } return 0; }