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\n"); else printf("no\n"); }}