直接打表0ms
代码如下:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
#include <math.h>
#include <stdio.h>
#include <string.h>
#define N 16010
int vis[N];
void gen_primes() {
int m = (int)sqrt(N+0.5), i, j;
memset(vis, 0, sizeof(vis));
for(i=2; i<=m; ++i) {
if(!vis[i]) {
for(j=i+i; j<=N; j+=i) {
vis[j] = 1;
}
}
}
vis[1] = vis[2] = 1;
}
int main(void) {
int n, i=1;
gen_primes();
while(scanf("%d", &n)!=EOF && n>0) {
if(vis[n]) {
printf("%d: no\n", i++);
} else printf("%d: yes\n", i++);
}
return 0;
}
#include<stdio.h>
#include<math.h>
#include<string.h>
int p[100000];
void primes()
{
int i,j;
memset(p,0,sizeof(p));
for(i=2;i*i<=100000;++i){
if(!p[i]){
for(j=i+i;j<=100000;j+=i)
p[j]=1;
}
}
p[1]=p[2]=1;
}
int main()
{
int i,j,n;
scanf("%d",&n);
primes();
printf("%d\n",p[n]);
}